2016-03-21 48 views
2

我已经做了一个简单的程序来记录鼠标位置和回放。现在我想添加事件,如果鼠标左键单击并单击鼠标右键。但我仍然不明白如何去做。我已经尝试了很多网站的代码,但仍然无法使用。任何人都想帮助我吗?我仍然在学习编程,我只想做简单的程序。如何让鼠标点击新的位置

这是我的代码

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

你试过'MouseClick'事件吗?事件参数包含一个名为'Button'的属性,它告诉你它是左键还是右键单击。 – Roman

+0

尚未bro,如何使用它? 你想请举个例子。我很新手。 – Hermanto

+0

那么,已经有两个答案,我猜你不会再需要我的例子了:) – Roman

回答

0

你可以设置一个事件处理程序火灾,只要鼠标按键(如下图所示)

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

感谢您的例子兄弟,这是工作,但是当我单击表单区域不起作用。你介意告诉我该怎么做?我想制作一个录制鼠标点击和定位的程序来执行自动点击。 – Hermanto

+0

@Hermanto这是因为在Cuken的例子中,它只被分配给'Form1'。如果您想为每个控件添加它,则必须将其分配给每个控件。 – Roman

+0

@Roman:我想制作这个程序来记录我在Windows上的所有活动,然后如果我想再次播放它。那么我如何分配给所有的兄弟? 感谢您的信息,现在我知道作业:) 如果你不介意,我想用FB或电子邮件发送给你。我非常喜欢dekstop编程。我通常使用控制台编程,所以我需要朋友分享关于dekstop编程:) 我的FB:www.facebook.com/TheH13和我的电子邮件:[email protected] – Hermanto

0

你可以使用一些像鼠标点击鼠标事件,MouseDown,MouseUp等。

例如:

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!"); 
     } 
    } 

假设您将此代码复制/放在Form1类的某处,它将覆盖Form1的OnMouseDown事件。 当你离开/右键单击表单时,你会得到相关的MessageBox。

如果您想在任何其他控件上使用该事件,则需要覆盖该控件的相关事件。


*注释后编辑:

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!"); 
     } 
    } 

而且onmousedown事件事件的形式负荷的控制添加。例如:

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

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

这样,当你左/右上Button1的单击ListView1的你会得到一个消息。

+0

感谢兄弟为你举例,它和库肯的样本一样。如果不在Form1区域,仍然无法正常工作。 – Hermanto

+0

嗨,正如我曾经说过的 - “如果您想在其他任何控件上使用该事件,则需要覆盖该控件的相关事件。”_ 我将根据您的要求进行编辑。 – uTeisT

+0

对不起兄弟,我是新手在dekstop编程。我不知道如何设置其他控制。我想让它可以在Windows上记录我的活动,而不仅仅是在我的程序表单上。那我该怎么做呢?你介意给我举个例子吗? :) 其实我不知道什么是控制名称,所以我的应用程序可以记录我所有的活动在Windows – Hermanto

相关问题