如何通过点击鼠标退出进程

本文关键字:退出 进程 鼠标 何通过 | 更新日期: 2023-09-27 18:19:27

我是C#的新手,刚开始写一些代码。我有一些想法,但在着手之前,需要在这件事上得到一些帮助。如何通过检测鼠标点击来退出正在运行的进程?我写了一些行,但在编译和运行时,鼠标单击根本没有效果。有人能帮我看看吗?这是我的台词。。。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Graphic_test_1
{
    public partial class Form1 : Form
    {
            public static Single lim_x, lim_y; // limits in X & Y
            public static int dly = 45;
            System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Blue); // color of the pen
            System.Drawing.Graphics Canvas;
            public Boolean clik = false; // initialize
            public string mystring;
            public Form1()
            {
                    InitializeComponent();
            }
            protected override void OnMouseClick(MouseEventArgs e)
            {
                    base.OnMouseClick(e);
                    clik = true;
                    lim_x = e.X;
                    lim_y = e.Y;
            }
            private void btgo_Click(object sender, EventArgs e) // Start drawing  [GO]
            {
                    Canvas = this.CreateGraphics();
                    btgo.Enabled = false;
                    MessageBox.Show("Checking the limits of the canvas.'r'n" +
                            "Click anywhere to stop and find out X position",
                            "Watching Coordinates",
                            MessageBoxButtons.OK, MessageBoxIcon.Information);
                    btgo.Visible = false;
                    btend.Enabled = false;
                    myPen.Color=System.Drawing.Color.Red; // color of the pen
                    myPen.Width = 2; // pen width
                    System.Drawing.Font drawfont = new System.Drawing.Font("Arial", 10); // Graphics font
                    System.Drawing.SolidBrush mybrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black); // color for the font
                    System.Drawing.Color background;
                    background = this.BackColor;
                    lim_x = 0; // initialize
                    do
                    {
                            Canvas.DrawLine(myPen, 0, 200, lim_x, 200);
                            mystring = "Current X = " + lim_x.ToString();
                            mybrush.Color = System.Drawing.Color.Black;
                            Canvas.DrawString(mystring, drawfont, mybrush, 351, 334);
                            System.Threading.Thread.Sleep(dly);
                            mybrush.Color = background; // use the background color
                            Canvas.FillRectangle(mybrush, new Rectangle(350, 333, 500, 353));
                            if (clik)
                            {
                                    mybrush.Color = background; // use the background color
                                    Canvas.FillRectangle(mybrush, new Rectangle(350, 333, 500, 353));
                                    mystring = "Current X = " + lim_x.ToString();
                                    mybrush.Color = System.Drawing.Color.Black;
                                    Canvas.DrawString(mystring, drawfont, mybrush, 351, 334);
                                    MessageBox.Show("Final position in X = " + lim_x.ToString(),
                                            "Mouse click detected",
                                            MessageBoxButtons.OK, MessageBoxIcon.Stop);
                                    break;
                            }
                            else
                                    lim_x++;
                    } while (lim_x < 611);
                    myPen.Dispose(); // release the pen
                    mybrush.Dispose(); // release the brush
                    Canvas.Dispose(); // release the canvas
                    btend.Enabled = true;
                    btend.Focus();
            }
            private void btend_Click(object sender, EventArgs e) // quit program  [END]
            {
                    Dispose(); // program ends.
            }
    }

}

如何通过点击鼠标退出进程

如果要关闭表单,请使用this.Close()。如果要退出应用程序,可以使用Application.Exit()

如果我理解得很好,您正在尝试停止它正在运行的进程。(例如btgo点击事件)。

为此,您应该使用单独的Thread来执行该过程。

为什么选择Thread

您的应用程序将运行两个不同的过程:

  1. Thread
  2. 第二个Thread

因此,在运行第二个Thread时,可以识别"鼠标点击"。

例如,我有一个Button和一个Label。我希望在Button1上单击,创建并启动一个Thread。此Thread将循环10000次并修改Label1文本。但当我点击标签时,循环将停止:

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
public partial class Test : Form
{
    Thread thread;
    public Test()
    {
        InitializeComponent();
    }
    void Button1_Click(object sender, EventArgs e)
    {
        thread = new Thread(new ThreadStart(StartThread));
        thread.Start();
    }
    private void StartThread()
    {
        for(int i =0;i<1000000;i++)
        {
            Thread.Sleep(1000);
            Label1.Invoke((MethodInvoker)(() => Label1.Text = i.ToString())); 
            //See the more information section, I will post a link about this.
        }
    }
    void Label1_Click(object sender, EventArgs e)
    {
        thread.Abort();
    }
}

更多信息:

  1. 您应该在此处阅读有关如何正确关闭线程的信息。

  2. 在此处调用方法。