在WPF TextBox上捕获鼠标单击

Rob*_*Dam 30 c# wpf xaml textbox mouseevent

我想捕获鼠标点击TextBox:

<Window x:Class="WpfApplication2.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
    <Grid>
        <TextBox x:Name="t" MouseDown="TextBox_MouseDown"
                 MouseLeftButtonDown="TextBox_MouseLeftButtonDown"
                 MouseLeftButtonUp="TextBox_MouseLeftButtonUp"
                 Height="50" />
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

现在我只在用户第一次进入时收到鼠标点击事件TextBox.在此TextBox键盘焦点之后,我不再接收鼠标点击事件.知道如何让这个工作吗?

Sve*_*lov 48

TextBox类

TextBox具有对冒泡的MouseUp和MouseDown事件的内置处理.因此,不会调用从TextBox侦听MouseUp或MouseDown事件的自定义事件处理程序.如果您需要响应这些事件,请改为侦听隧道PreviewMouseUp和PreviewMouseDown事件,或者使用HandledEventsToo参数注册处理程序(后一个选项仅通过代码可用).除非您故意要禁用TextBox本机处理这些事件,否则请不要标记处理的事件,并注意这会对控件的UI产生显着影响.

在你的代码中,你正在解雇 MouseLeftButtonUp


Nat*_*ler 28

您可以使用PreviewMouseDown事件,并在控件的内部部分处理单击之前捕获任何方式的单击:

<TextBox x:Name="t" PreviewMouseDown="TextBox_MouseDown" Height="32" Width="274" />
Run Code Online (Sandbox Code Playgroud)