winform点动按钮怎么做

winform如何实现点动功能,即鼠标长按按钮,按钮执行操作(例如bool置1);松开按钮,操作停止(bool置0)。

引用 皆我百晓生 小程序回复内容作答:
要实现鼠标长按按钮的功能,可以使用以下步骤:

  1. 在WinForm窗体中,将一个按钮(Button)控件添加到窗体上,并设置按钮的名称和位置。

  2. 在窗体的构造函数或者Load事件中,为按钮的MouseDown和MouseUp事件绑定对应的事件处理方法。

  3. 在按钮的MouseDown事件处理方法中,设置一个定时器(Timer),并启动定时器。定时器的间隔设置为需要触发操作的时间间隔。

  4. 在按钮的MouseUp事件处理方法中,停止定时器。

  5. 在定时器的Tick事件处理方法中,执行需要的操作,例如将bool变量置为1。

以下是一个示例代码:

public partial class Form1 : Form
{
    private Timer timer;
    private bool isButtonPressed;

    public Form1()
    {
        InitializeComponent();
        isButtonPressed = false;

        button1.MouseDown += Button1_MouseDown;
        button1.MouseUp += Button1_MouseUp;

        timer = new Timer();
        timer.Interval = 100; // 设置定时器的间隔为100毫秒
        timer.Tick += Timer_Tick;
    }

    private void Button1_MouseDown(object sender, MouseEventArgs e)
    {
        isButtonPressed = true;
        timer.Start();
    }

    private void Button1_MouseUp(object sender, MouseEventArgs e)
    {
        isButtonPressed = false;
        timer.Stop();
    }

    private void Timer_Tick(object sender, EventArgs e)
    {
        // 执行操作,例如将bool变量置为1
    }
}

在上述示例代码中,当鼠标按下按钮时,会启动定时器,并在定时器的Tick事件中执行需要的操作。当鼠标松开按钮时,会停止定时器。通过判断isButtonPressed变量的值,可以在需要的操作中进行条件判断。

用checkbox,checkbox的外观样式有一种就是按钮样式
也就是点一下按下去,再点一下才抬起来。

mousedown,mouseup事件。
暂时先回答这么多把。如果你不清楚或者想要更好的。我等你回复了,再决定后面的回答。

以前写了一个方法,就是长按控件时触发的,给你试试
我是静态扩展方法,你把里面的this 去掉就是普通静态方法了

/// <summary>
        /// 注册 MouseDown、MouseUp 事件
        /// 在鼠标按下时异步执行委托
        /// </summary>
        /// <param name="Control">控件</param>
        /// <param name="Time">循环时线程睡眠时间</param>
        /// <param name="TimeDecrement">每次循环睡眠时间减少值</param>
        /// <param name="Action">循环时执行的事件</param>
        /// <param name="Func">在按下的过程中,指示是否继续循环</param>
        public static void MouseDownLoop(this Control Control, int Time, int TimeDecrement, Action Action, Func<bool> Func = null)
        {
            if (Action == null)
            {
                return;
            }
            bool IsStart = true;
            Func = Func ?? (() => true);
            System.Threading.Tasks.Task task = null;
            Control.MouseDown += (sender, e) =>
            {
                if (task != null)
                {
                    return;
                }
                IsStart = true;
                task = System.Threading.Tasks.Task.Run(() =>
                {
                    System.Threading.Thread.Sleep(1500);
                    while (IsStart && Func())
                    {
                        Action();
                        System.Threading.Thread.Sleep(Time);
                        if (Time > 50)
                        {
                            Time -= TimeDecrement;
                            if (Time < 50)
                            {
                                Time = 50;
                            }
                        }
                    }
                    task = null;
                });
            };
            Control.MouseUp += (sender, e) =>
            {
                IsStart = false;
                if (task != null)
                {
                    return;
                }
            };
        }