2

我正在创建一个自定义控件。在那个控件上,我有大约 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 事件,以便我可以在单个事件中更改我的光标。

4

3 回答 3

3

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

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

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

于 2013-09-09T09:32:25.813 回答
0

你可以这样做。假设您有三个按钮,名称分别为 button1、button2 和 button3。

  1. 在表单加载时写下这个

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) { Button oButton = (Button)sender; if (oButton.Name == "button1") { oButton.Cursor = Cursors.WaitCursor; } else if (oButton.Name == "button2") { oButton.Cursor = Cursors.Hand; } else if (oButton.Name == "button3") { oButton.Cursor = Cursors.Default; } }

它会根据您的需要工作。

谢谢

于 2013-09-09T09:38:10.197 回答
0

您可以分配给每个用户控件的鼠标悬停,或者您可以分配给一个事件处理程序,这对您的所有控件都是相同的。根据您选择的技术,您可以设置光标,第二种技术需要 a) 硬编码 if / else 或 switch case 或 b) 反射将发送者转换为正确的类型,然后设置鼠标光标。这有帮助吗?

于 2013-09-09T09:28:21.703 回答