2016-03-21 7 views
2

Ich mache schon ein einfaches Programm zum Aufzeichnen der Mausposition und Wiedergabe. Jetzt möchte ich ein Ereignis hinzufügen, wenn die Maus mit der linken Maustaste klickt und mit der rechten Maustaste klickt. Aber ich verstehe immer noch nicht, wie es geht. Ich probiere schon Code von vielen Seiten aus, arbeite aber immer noch nicht. Will mir bitte jemand helfen? Ich lerne immer noch über Programmieren, ich will einfach Programm machen.Wie man Maus macht Klicken für neue Position

dies ist mein Code

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace AutoClicker 
{ 
public partial class Form1 : Form 
{ 
    ListViewItem lv; 

    int a, b; 

    public Form1() 
    { 
     InitializeComponent(); 
     this.Closing += new System.ComponentModel.CancelEventHandler(this.FormClosingEventCancle_Closing); //Menangkap event x di klik 
    } 


    private void FormClosingEventCancle_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
    { 
     DialogResult dr = MessageBox.Show("Yakin ingin keluar?", "Konfirmasi", MessageBoxButtons.YesNo); if (dr == DialogResult.No) 
      e.Cancel = true; 
     else 
      e.Cancel = false; 
    } 
    private void button1_Click(object sender, EventArgs e) 
    { 
     timer1.Start(); 
     btn_putar.Enabled = false; 
     btn_rekam.Enabled = false; 
     btn_berhenti.Enabled = true; 
    } 

    private void timer2_Tick(object sender, EventArgs e) 
    { 
     //set posisi baru mouse 
     if (a != b) 
     { 
      Cursor.Position = new Point(int.Parse(listView1.Items[a].SubItems[0].Text), int.Parse(listView1.Items[a].SubItems[1].Text)); 
      a++; 
     } 
      //agar bisa rekam ulang dan data di set ulang 
     else 
     { 
      btn_rekam.Enabled = true; 
      btn_putar.Enabled = false; 
      btn_berhenti.Enabled = false; 
      listView1.Clear(); 
      a = 0; 
      b = 0; 
      timer2.Stop(); 
     } 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     lv = new ListViewItem(Cursor.Position.X.ToString()); 
     lv.SubItems.Add(Cursor.Position.Y.ToString());   
     listView1.Items.Add(lv); 

     b++; 
    } 

    private void btn_berhenti_Click(object sender, EventArgs e) 
    { 
     btn_rekam.Enabled = true; 
     btn_putar.Enabled = true; 
     timer1.Stop(); 
     timer2.Stop(); 
    } 

    private void btn_putar_Click(object sender, EventArgs e) 
    { 
     timer2.Start(); 
     btn_putar.Enabled = false; 
     btn_rekam.Enabled = false; 
     btn_berhenti.Enabled = false; 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     a = 0; 
     b = 0; 
     btn_berhenti.Enabled = false; 
     btn_putar.Enabled = false; 

    } 
    } 
} 
+0

Haben Sie 'MouseClick' Event probiert? Die Ereignisargumente enthalten eine Eigenschaft namens "Button", die angibt, ob es sich um einen Links- oder Rechtsklick handelt. – Roman

+0

noch nicht bro, wie benutzt man es? möchten Sie bitte ein Beispiel machen. Ich bin so Neuling. – Hermanto

+0

Nun, es gibt bereits zwei Antworten, ich denke, du wirst mein Beispiel nicht mehr brauchen :) – Roman

Antwort

0

Sie können eine Ereignisbehandlungsroutine abzufeuern Setup, wenn die Maustaste gedrückt wird (siehe unten;)

namespace MouseClickDemo 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
     InitializeComponent(); 
     MouseClick += Form1_MouseClick; 
    } 

    private void Form1_MouseClick(object sender, MouseEventArgs e) 
    { 
     if(e.Button == MouseButtons.Left) 
     { 
      //Left mouse button hit 
     } 
     if(e.Button == MouseButtons.Right) 
     { 
      //Right mouse button hit 
     } 
    } 
} 
+0

danke für dein Beispiel bro, es ist Arbeit, aber wenn ich Klicke aus dem Formularbereich, es funktioniert nicht. Macht es Ihnen etwas aus, mir zu sagen, wie ich das machen soll? Ich möchte ein Programm für die Aufnahme von Mausklick und Position für einen Auto-Klick machen. – Hermanto

+0

@Hermanto dies ist, weil im Beispiel von Cuken, ist es nur zugeordnet 'Form1'. Wenn Sie es für jedes Steuerelement hinzufügen möchten, müssen Sie es jedem Steuerelement zuweisen. – Roman

+0

@Roman: Ich möchte dieses Programm für die Aufzeichnung aller meiner Aktivitäten bei Windows machen und dann, wenn ich es noch einmal nur abspielen möchte. So, wie ich all diesem Bruder zugewiesen habe? Danke für Ihre Informationen, jetzt weiß ich über die Zuweisung :) Wenn es Ihnen nichts ausmacht, ich möchte Sie mit FB oder E-Mail. Ich bin so neu in Dekstop Programmierung. Ich benutze normalerweise Konsolenprogrammierung, also brauche ich Freund, um über Dekstop Programmierung zu teilen :) meine FB: www.facebook.com/TheH13 und meine E-Mail: [email protected] – Hermanto

0

Sie einige Mausereignisse wie Mouseclick verwenden können , MouseDown-, MouseUp usw.

Zum Beispiel:

protected override void OnMouseDown(MouseEventArgs e) 
    { 
     if(e.Button == System.Windows.Forms.MouseButtons.Left) 
     { 
      //Do some stuff 
      MessageBox.Show("Lefty!"); 
     } 
     else if(e.Button == System.Windows.Forms.MouseButtons.Right) 
     { 
      //Do some stuff 
      MessageBox.Show("Righty!"); 
     } 
    } 

Angenommen, Sie kopieren diesen Code irgendwo in der Form1-Klasse, wird das OnMouseDown-Ereignis von Form1 überschrieben. Wenn Sie mit der linken/rechten Maustaste auf das Formular klicken, erhalten Sie die zugehörige MessageBox.

Wenn Sie das Ereignis in einem anderen Steuerelement verwenden möchten, müssen Sie das zugehörige Ereignis des Steuerelements überschreiben.


* Edit nach Kommentar:

public void OnMouseDown(object sender, MouseEventArgs e) 
    { 
     if(e.Button == System.Windows.Forms.MouseButtons.Left) 
     { 
      //Do some stuff 
      MessageBox.Show("Lefty!"); 
     } 
     else if(e.Button == System.Windows.Forms.MouseButtons.Right) 
     { 
      //Do some stuff 
      MessageBox.Show("Righty!"); 
     } 
    } 

Und OnMouseDown Ereignis auf Formular Last auf jede Kontrolle hinzufügen. Zum Beispiel:

private void Form1_Load(object sender, EventArgs e) 
    { 
     a = 0; 
     b = 0; 

     button1.MouseDown += OnMouseDown; 
     listView1.MouseDown += OnMouseDown; 
    } 

diese Weise, wenn Sie nach links/rechts klicken Sie button1 oder ListView1 Sie eine MessageBox bekommen.

+0

Danke Bro für dein Beispiel, es ist das gleiche wie Cukens Beispiel. Funktioniert immer noch nicht außerhalb von Form1. – Hermanto

+0

Hallo, wie ich schon sagte _ "Wenn Sie das Ereignis auf einem anderen Steuerelement verwenden möchten, müssen Sie das zugehörige Ereignis des Steuerelements überschreiben." _ Ich werde bearbeiten, um Ihre Anforderung zu erfüllen. – uTeisT

+0

Entschuldigung, ich bin so Neuling in Dekstop Programmierung. Ich weiß nicht, wie man auf andere Kontrolle setzt. Ich möchte, dass es meine Aktivität unter Windows aufzeichnen kann, nicht nur auf dem Formular meines Programms. Also wie kann ich das machen? Macht es dir etwas aus, gib mir bitte ein Beispiel? :) eigentlich weiß ich nicht, was ist der Name der Steuerung, so kann meine Anwendung alle meine Aktivität auf Windows aufzeichnen – Hermanto