根据控件动态更改光标
本文关键字:光标 动态 控件 | 更新日期: 2023-09-27 18:30:48
我正在创建自定义控件。在该控件上,我有大约 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 事件上确定我正在哪个子控件上移动,以便我可以在单个事件中更改光标。
依赖事件,可以使用给定控件的Cursor Property
。例如,如果您有三个文本框,则可以在"设计视图"的"属性框"中更改此属性,或者只编写:
textBox1.Cursor = Cursors.WaitCursor;
textBox2.Cursor = Cursors.Hand;
textBox3.Cursor = Cursors.Default;
在每个文本框中"输入"时,光标将显示给定的形状。
您可以分配给每个用户控件的鼠标悬停,也可以分配给一个事件处理程序,这对于所有控件都是相同的。根据您选择的技术,您可以设置光标,第二种技术需要 a) 硬编码 if/else 或切换大小写或 b) 反射将发送器转换为正确的类型,然后设置鼠标光标。这有帮助吗?
这样做。假设您有三个按钮,名称分别为button1,button2和button3。
- 在表单加载时写下此内容
this.button1.鼠标悬停 += new System.EventHandler(this.鼠标悬停); this.button2.鼠标悬停 += new System.EventHandler(this.鼠标悬停); this.button3.MouseHover += new System.EventHandler(this.鼠标悬停);
现在把它写成新事件:
private void 鼠标悬停(对象发送器,事件参数 e){ 按钮 o按钮 = (按钮)发送器; if (oButton.Name == "button1") { o按钮.光标 = 光标.等待光标; } 否则如果 (oButton.Name == "按钮2") { o按钮.光标 = 光标.手; } 否则如果 (oButton.Name == "按钮3") { o按钮.光标 = 光标.默认; }}
它将根据您的需要工作。
谢谢