c# - WPF - 在文本框外部单击时移除焦点

标签 c# wpf focus click

我有一些文本框,我希望它们的行为与 WPF 应用程序的正常行为略有不同。基本上,我希望它们的行为更像网页上的文本框。也就是说,如果我单击文本框以外的任何地方,它将失去焦点。这样做的最佳方法是什么?

如果答案是以编程方式移除焦点,那么检测边界外的鼠标点击的最佳方法是什么?如果我点击的元素将成为焦点的新接收者怎么办?

最佳答案

与其向窗口添加新控件,我认为您应该为您的 Grid 命名并对窗口上的 MouseDown 事件使用react,将焦点移动到 < strong>Grid 本身。像这样:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" 
    Height="412" Width="569" 
    MouseDown="Window_MouseDown" 
    Name="window1">

    <Grid ShowGridLines="False" 
          Background="#01FFFFFF"
          KeyDown="Grid_KeyDown" 
          Name="grid1" 
          Focusable="True">

          <TextBox Width="120" Margin="117,61,0,0" 
                   Name="textBox1" 
                   VerticalAlignment="Top" 
                   HorizontalAlignment="Left"/>
    </Grid>
</Window>

代码隐藏:

private void window1_MouseDown(object sender, MouseButtonEventArgs e)
{
    grid1.Focus();
}

关于c# - WPF - 在文本框外部单击时移除焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6489032/

相关文章:

c# - session 正在跨 Controller 的 RedirectToAction 上重置

wpf - 有没有一种方法可以在客户端的一个地方处理 WCF 服务器故障?

html - 所有浏览器的自定义焦点指示器

xcode - 当用户在 Swift 中输入 2 个字符时将焦点设置在下一个文本字段上

c# - MVC Controller 方法的不同参数签名

c# - 在异步函数中,为什么我必须等待?

c# - 将空值绑定(bind)到 wpf 控件的宽度和高度时出现绑定(bind)错误

c# - 在 WPF 的只读文本框中启用复制粘贴功能

electron - 当我调用win.loadFile(..)时,Electron BrowserView失去了焦点

c# - 当应用程序池在 ASP.NET MVC 中重新循环时会发生什么?