Panel上的MouseUp?

时间:2012-04-23 11:31:53

标签: .net winforms

我创建了一个新的WinForm。 在那个WinForm中我放了一个Panel。 Dock = Fill。

运行项目。
在表单标题上进行DoubleClick(最大化)

在面板上获取mouseUp:

  

功能:WindowsApplication1.Form1.Panel1_MouseUp(Object,   System.Windows.Forms.MouseEventArgs),线程:0x2068主线程

是错误还是功能? ))

据我所知,当我双击某个部分的面板时,鼠标下面会出现片刻,但是我在面板上没有任何鼠标,但是?!

我的问题: 我在面板中有一些可以选择的对象。 当我在面板上单击(MouseUp)(在“空”空间,没有objets)时,通常,我取消选择所有对象。

但是在最大化的情况下,我应该保持对象选择不变!

如何“过滤”MouseUp的最大化情况?

1 个答案:

答案 0 :(得分:2)

你很好地描述了它

  1. 标题上的MouseDown
  2. 标题上的MouseUp
  3. 标题上的MouseDown
  4. WINDOW最大化,现在鼠标在表单上。
  5. MouseUp on FORM。
  6. 即使你是对的,这种行为非常烦人无用, 这就是逻辑上应该如何。

    我建议尽可能避免使用MouseDown / MouseUp。 尽可能使用MouseClick / DblClick。

    此致

    编辑:

    我有两个想法:

    在没有MouseDown的情况下跟踪MouseUp。

    private bool bMouseDownState = false;
    
    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        bMouseDownState = true;
    }
    
    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        if (!bMouseDownState)
            return;
        bMouseDownState = false;
    }
    

    注意最大化事件并忽略MouseUp。

    但是当窗口几乎最大化时(这不会导致鼠标升起!)这个很棘手!)

    最后忽略以下鼠标(取消选择对象)。

    * 最后一个 - 为什么要发明轮子? * 使用已制作的绘图画布(visio?)