C#学习教程:Windows窗体:检测聚焦控件的更改分享


Windows窗体:检测聚焦控件的更改

我正在Windows窗体应用程序中实现复制粘贴。 当用户更改应用程序中的focus元素时,我需要为这两个操作启用/禁用条形按钮。

我可以使用以下内容找到当前的聚焦控件: http : //www.syncfusion.com/FAQ/windowsforms/faq_c41c.aspx#q1021q ,但是如何检测聚焦控件是否已更改?

在表单加载事件处理程序中,您还可以遍历表单中包含的所有控件,并为每个可聚焦控件添加Enter事件的事件处理程序:

private void Form1_Load(object sender, EventArgs e) { foreach (Control control in Controls) { control.Enter += ControlReceivedFocus; } } void ControlReceivedFocus(object sender, EventArgs e) { Debug.WriteLine(sender + " received focus."); } 

我的建议是使用Application.Idle事件。

使用这种技术,您将始终拥有正确的按钮状态,您无需担心订阅许多控件事件以检测焦点更改。 这也是轻量级方法,因为只有在应用程序不忙时才会引发空闲事件。

我认为你应该向控件添加一个事件处理程序(或者如果你有许多相同的类型,将其子类化,并覆盖相应的OnChange处理程序)。 这样您就不必“找到”聚焦控件(它将作为发送者参数给出),并且只有在实际发生更改时才会出现该事件。

要检测对控件的焦点,可以创建此事件:

 void MyGotFocus(object sender, EventArgs e) { if (sender is TextBox) { //TODO YOUR OPERATION //FOR EXAMPLE (sender as TextBox).SelectAll(); } } 

下一步是通过代码关联控件和事件:

上述就是C#学习教程:Windows窗体:检测聚焦控件的更改分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 myText1.GotFocus += MyGotFocus; myText2.GotFocus += MyGotFocus; 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031964.html

发表评论

邮箱地址不会被公开。 必填项已用*标注