none
C# 鼠标事件左键一直按下,响应事件 RRS feed

  • 问题

  • 有一button控件,在click事件中添加了让文本框显示数字加一的功能,但是如果需要从1一直加到100,要单击很多次,如何实现鼠标左键按住该按钮一定时间后,不断执行加1的操作,知道鼠标左键抬起,谢谢!
    guiwenyang
    2011年9月15日 5:22

答案

  • 使用buttion的MouseDown和MouseUp事件

    bool ismouse = true;
    
            //鼠标按下
    
            private void button1_MouseDown(object sender, MouseEventArgs e)
    
            {
    
     ismouse = true;
    
                int i =1;
    
                while (ismouse)
    
                {
    
                    if (!ismouse)
    
                    {
    
                        break;
    
                    }
    
                    i = i + 1;
    
                    this.textBox1.Text =i.ToString();
    
                    Application.DoEvents();
    
                }
    
           
    
            }
    
            //鼠标松开
    
            private void button1_MouseUp(object sender, MouseEventArgs e)
    
            {
    
                ismouse = false;
    
            }
    
    

     


    http://blog.csdn.net/zx13525079024
    2011年9月15日 6:37
  • 写了个sample供楼主参考

     

            bool mdown = false;
    
            private void button1_MouseDown(object sender, MouseEventArgs e)
            {
                if (mdown == false)
                {
                    mdown = true;
                    numericUpDown1.Value++;
                    timer1.Enabled = true;                
                }
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (mdown == true)
                    numericUpDown1.Value++;
            }
    
            private void button1_MouseUp(object sender, MouseEventArgs e)
            {
                mdown = false;
                timer1.Enabled = false;
            }
    

    我用timer来进行累加,楼主可以根据需要修改timer中的代码

     


    MouseDown事件中,我没写判断鼠标左右键的代码,如果需要,楼主可自行添加
    2011年9月15日 6:44

全部回复

  • 有个mouse down事件,可以订阅这个事件。但是没mouse up事件吧。

    不过可以这样实现,鼠标点击一下 开始加 在点一下,停止加。这样控制起来比较简单。

     


    family as water
    2011年9月15日 6:10
  • 使用buttion的MouseDown和MouseUp事件

    bool ismouse = true;
    
            //鼠标按下
    
            private void button1_MouseDown(object sender, MouseEventArgs e)
    
            {
    
     ismouse = true;
    
                int i =1;
    
                while (ismouse)
    
                {
    
                    if (!ismouse)
    
                    {
    
                        break;
    
                    }
    
                    i = i + 1;
    
                    this.textBox1.Text =i.ToString();
    
                    Application.DoEvents();
    
                }
    
           
    
            }
    
            //鼠标松开
    
            private void button1_MouseUp(object sender, MouseEventArgs e)
    
            {
    
                ismouse = false;
    
            }
    
    

     


    http://blog.csdn.net/zx13525079024
    2011年9月15日 6:37
  • 写了个sample供楼主参考

     

            bool mdown = false;
    
            private void button1_MouseDown(object sender, MouseEventArgs e)
            {
                if (mdown == false)
                {
                    mdown = true;
                    numericUpDown1.Value++;
                    timer1.Enabled = true;                
                }
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (mdown == true)
                    numericUpDown1.Value++;
            }
    
            private void button1_MouseUp(object sender, MouseEventArgs e)
            {
                mdown = false;
                timer1.Enabled = false;
            }
    

    我用timer来进行累加,楼主可以根据需要修改timer中的代码

     


    MouseDown事件中,我没写判断鼠标左右键的代码,如果需要,楼主可自行添加
    2011年9月15日 6:44
  • 开心兄的代码测试可用……虽然速度有点快,不过确实是一个很不错的解决方案

    学到了一招

    2011年9月17日 0:05