当尝试修改文本并在鼠标事件上选择TextBox的内容时,我注意到左右单击之间的行为不同。
我正在捕获PreviewMouseDown事件,我注意到当按下鼠标右键时,光标移动到TextBox的开头,然后在释放时返回到结尾。
这可以防止选择TextBox文本,但左键单击时不会发生同样的情况。
任何想法为什么这只会发生右键点击?有什么方法可以阻止它吗?
澄清我想要做的是每次用户在文本框中单击时递增/递减文本框的文本。需要进行选择,以便用户可以单击以修改文本或键入所需的显式值,并立即替换文本。
的Xaml:
<Window x:Class="WpfSamples.Selection.InTextBoxWithEvent"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="InTextBox" Height="300" Width="300">
<Grid>
<TextBox Text="focus away here" VerticalAlignment="Center"
HorizontalAlignment="Center" Width="100" Margin="0,0,0,77"/>
<TextBox Text="click here" VerticalAlignment="Center"
HorizontalAlignment="Center" Width="100" ContextMenu="{x:Null}"
PreviewMouseDown="UIElement_OnPreviewMouseDown"
PreviewMouseUp="UIElement_OnPreviewMouseUp"/>
</Grid>
</Window>
代码背后:
public partial class InTextBoxWithEvent
{
public InTextBoxWithEvent()
{
InitializeComponent();
}
private void UIElement_OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
{
var textbox = (TextBox)sender;
textbox.Text = DateTime.Now.Millisecond.ToString();
}
private void UIElement_OnPreviewMouseUp(object sender, MouseButtonEventArgs e)
{
var textbox = (TextBox)sender;
textbox.CaretIndex = 0;
textbox.Select(0, textbox.Text.Length);
}
}
答案 0 :(得分:0)
为什么会这样? 右键单击控件后面的代码仍然会尝试将焦点放在上下文菜单上,因此您的文本框控件会失去焦点。
有任何预防方法吗? 因此,您需要将焦点捕获回文本框。