Hermanto
Hermanto

Reputation: 23

How To make Mouse Click for new position

i already make a simple program to recording mouse position and playback. Now i wanna add event if the mouse left click and right mouse click. But i still not understand how to do it. I already try code from many site, but still not work. Any one wanna help me please ? I'm still learning about programing, i just wanna make simple program.

this is my 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;

    }
  }
}

Upvotes: 2

Views: 416

Answers (2)

uTeisT
uTeisT

Reputation: 2266

You can use some of Mouse events like MouseClick, MouseDown, MouseUp, etc.

For example:

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

Assuming you copy/pase this code somewhere in Form1 class, it will override Form1's OnMouseDown event. When you left/right click on form, you'll get related MessageBox.

If you want to use the event on any other Control, you need to override that control's related event.


*Edit after comment:

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

And add OnMouseDown event to any Control on form load. For example:

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

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

That way, when you left/right click on button1 or listView1 you will get a MessageBox.

Upvotes: 1

Cuken
Cuken

Reputation: 29

You can setup an event handler to fire whenever the mouse button is clicked (shown below;)

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
        }
    }
}

Upvotes: 0

Related Questions