代码之家  ›  专栏  ›  技术社区  ›  samt

c#鼠标事件序列

  •  -1
  • samt  · 技术社区  · 6 年前

    问题为什么此代码只生成一个消息框“Down”?我没有起床。如果我屏蔽了代码,上行就正常了。

    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 Mouse
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }   
            private void Form1_MouseUp(object sender, MouseEventArgs e)
            {
               MessageBox.Show("Up");                     
            }
            private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
               MessageBox.Show("Down");
            }     
        }
    }
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Steve    6 年前

    因为你在展示 MessageBox

    每当鼠标按下事件发生时 对话框 将弹出。这个 对话框 将位于前台,up事件将位于 对话框 而不是表单。因此表单中的up事件不会激发

    只要做一个 Console.WriteLine 而不是 对话框 它应该按预期工作

        2
  •  0
  •   Kevbo    6 年前

    如果您删除消息框调用,它们都将激发。这会干扰鼠标事件,因为您失去了对窗体的关注。不要使用消息框,请尝试使用。。。

      Console.WriteLine("MouseUp"); 
    

    这将显示在输出窗口中,不会干扰事件