C#桌面应用中如何判断TextBox控件是否已失去焦点
你写法报错的核心原因是:Leave 是TextBox的事件,并非存储焦点状态的布尔属性,不能直接用 == true 做判断,事件的作用是绑定焦点离开时要触发的执行逻辑。
对应两种需求的正确实现:
1. 需要在焦点离开TextBox的瞬间自动执行逻辑
直接订阅Leave事件即可,可以在窗体初始化时用代码绑定:
// 窗体加载/初始化阶段注册事件 txt_partybillno.Leave += Txt_partybillno_Leave; // 焦点离开时自动触发的方法 private void Txt_partybillno_Leave(object sender, EventArgs e) { // 此处写你要执行的业务代码 }
也可以直接在窗体设计器中,选中TextBox后在属性面板的事件列表里双击Leave项,自动生成事件绑定代码。
2. 需要在任意其他事件中,判断当前TextBox是否已失去焦点
直接调用控件的Focused布尔属性判断即可,该属性返回当前控件是否持有输入焦点:
if (!txt_partybillno.Focused) { // 此处写你要执行的业务代码 }
补充说明:如果你的逻辑需要严格对应「用户刚从该TextBox移走焦点」的触发时机,优先用Leave事件;如果只是其他逻辑执行时需要确认当前该TextBox没有被选中,用上述Focused属性判断即可。
内容的提问来源于stack exchange,提问作者s.k.Soni
相关产品推荐
相关产品推荐

