【问题标题】:MouseMove Event Missing from properties list for a NumericUpDown controlNumericUpDown 控件的属性列表中缺少 MouseMove 事件
【发布时间】:2013-08-28 17:05:30
【问题描述】:

我正在使用 Visual Basic 2010 Express。当我将 NumericUpDown 控件添加到窗体时,事件的属性列表未显示 MouseMove 事件。我知道它存在,我可以使用 AddHandler 为其创建一个工作处理程序,但它只是没有出现。它也不会出现在智能感知列表中。

有没有办法“刷新” Visual Studio 以使其包含在内?

【问题讨论】:

    标签: vb.net winforms numericupdown


    【解决方案1】:

    来自它继承自的 UpDownBase 控件的源代码:

    [EditorBrowsable(EditorBrowsableState.Never)]
    [Browsable(false)]
    public new event MouseEventHandler MouseMove
    

    微软决定不公开。我猜的原因是,在该控件上使用 MouseMove 事件做任何事情是没有意义的。它是一个由 TextBox 和一些按钮组成的复合控件。

    如果公开该事件很重要,您必须从 NumericUpDown 控件继承并自己公开该事件:

    public class MyUpDown : NumericUpDown {
    
      [Browsable(true)]
      [EditorBrowsable(EditorBrowsableState.Always)]
      public new event MouseEventHandler MouseMove {
        add { base.MouseMove += value; }
        remove { base.MouseMove -= value; }
      }
    }
    

    还有VB.Net版本:

    Public Class MyUpDown
      Inherits NumericUpDown
    
      <Browsable(True)> _
      <EditorBrowsable(EditorBrowsableState.Always)> _
      Public Shadows Event MouseMove(sender As Object, e As MouseEventArgs)
    
      Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
        MyBase.OnMouseMove(e)
        RaiseEvent MouseMove(Me, e)
      End Sub
    End Class
    

    【讨论】:

    • 添加 {} 和删除{} 行应引用“base.MouseMove”,而不是“this.MouseMove”,否则会崩溃。
    【解决方案2】:

    您要知道,即使您将MouseMoveMouseLeave 事件设置为NumericUpDown 控件,它们也不会正常工作。如果你真的想处理NumericUpDown 的文本框鼠标事件,你应该将它设置为NumericUpDownControls 集合的第二个元素(它将是TextBox 的一部分)。

    像这样(C#语法):

    myNumericUpDown->Controls[1]->MouseLeave += gcnew System::EventHandler(this, &Form1::myNumericUpDown_MouseLeave);
    myNumericUpDown->Controls[1]->MouseMove += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::myNumericUpDown_MouseMove);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多