根据控件动态更改光标

时间:2013-09-09 09:23:27

标签: c# .net user-controls

我正在创建一个自定义控件。在那个控件上我有大约20个子控件。当我在我的用户控件上移动光标时,我希望光标根据它正在移动的子控件进行更改。

例如

User Control
--Control 1 : if(Condition 1) { Mouse - Wait } else { Mouse - Default }
--Control 2 : if(Condition 1) { Mouse - Hand } else { Mouse - Default }
--Control 3 : Mouse - Default

......等等。

有没有办法在用户控件的MouseMove事件上确定我正在移动哪个子控件,以便我可以在单个事件中更改光标。

3 个答案:

答案 0 :(得分:2)

您不需要依赖事件,可以使用给定控件的Cursor Property。例如,如果您有三个TextBox,则可以在“设计视图”的“属性框”中更改此属性,或者只写:

textBox1.Cursor = Cursors.WaitCursor;
textBox2.Cursor = Cursors.Hand;
textBox3.Cursor = Cursors.Default;

当在每个文本框中“输入”时,光标将显示给定的形状。

答案 1 :(得分:0)

您可以分配给EACH usercontrol的鼠标悬停,也可以分配给ONE事件处理程序,这对所有控件都是相同的。根据您选择的技术,您可以设置光标,第二种技术需要a)硬编码的if / else或switch情况或b)反射投射发送器到右类型然后设置鼠标光标。 这有帮助吗?

答案 2 :(得分:0)

你可以这样做。假设您有三个按钮,其名称为button1,button2& BUTTON3。

  1. 在表单加载
  2. 上写下此内容
      

    this.button1.MouseHover + = new System.EventHandler(this.MouseHover);   this.button2.MouseHover + = new System.EventHandler(this.MouseHover);   this.button3.MouseHover + = new System.EventHandler(this.MouseHover);

    1. 现在将其写为新事件:

      private void MouseHover(object sender,EventArgs e) {     按钮oButton =(按钮)发件人;     if(oButton.Name ==“button1”)     {         oButton.Cursor = Cursors.WaitCursor;     }     否则if(oButton.Name ==“button2”)     {         oButton.Cursor = Cursors.Hand;     }     否则if(oButton.Name ==“button3”)     {         oButton.Cursor = Cursors.Default;     } }

    2. 它将按您的需要工作。

      由于