WPF TabItem 失去焦点事件
我的 tabItems 标题上有 TextBox。我使用 LostFocus 和 MouseDoubleClick 事件将文本设置到 TextBox。
<TabControl>
<TabItem Width="50">
<TabItem.Header>
<TextBox Text="text" IsReadOnly="True" LostFocus="TextBox_LostFocus" MouseDoubleClick="TextBox_MouseDoubleClick"/>
</TabItem.Header>
</TabItem>
</TabControl>
private void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
TextBox text_box = sender as TextBox;
if (text_box == null) { return; }
text_box.IsReadOnly = false;
text_box.SelectAll();
}
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
TextBox text_box = sender as TextBox;
if (text_box == null) { return; }
text_box.IsReadOnly = true;
}
仅当您单击 TextBox 外部的 TabItem 标题区域或另一个 TabItem 时,才会发生 LostFocus 事件。 单击选项卡项内容区域不会触发失去焦点事件。
当用户单击文本框之外的任何区域时,如何使文本框失去焦点?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要失去焦点,元素必须首先拥有焦点。也许另一种选择是在初始化元素时将元素焦点放在适当的位置,例如:
更改
为
并在构造函数中使用 FocusManager 设置焦点元素:
焦点概述 是一个很好的资源,区分键盘焦点和逻辑焦点也很重要!
To lose focus, an element must first have focus. Perhaps an alternative could be to give your element focus in an appropriate place when your elements are initialized, for example:
Change
To
And in your constructor use the FocusManager to set the focused element:
Focus Overview on MSDN is a good resource, it is also important to distinguish between keyboard focus and logical focus!
要失去焦点,换句话说,要在选项卡内容(目标)内部获得焦点:
将事件处理程序添加到 PreviewMouseDown 事件(注意:不是 MouseDown)以对鼠标单击做出反应。
如果您除了 3 步,您的应用程序将仅对 TAB 键做出反应。
To lost Focus, in other word to get Focus at inside tab content(target):
Add event handler to PreviewMouseDown event(NOTE: NOT MouseDown) to react to mouse click.
If you except 3 step, you application will react only to TAB key.