单击它选择 TextBox 的所有内容
Selecting all contents of TextBox on clicking it
我有一个文本框。单击它时,应选择 TextBox 的所有内容。解决方案是什么?
我试过的代码是:
<TextBox Name="questionTitle_textBox" Text="Question title" PreviewMouseDown="questionTitle_textBox_PreviewMouseDown"/>
函数questionTitle_textBox_PreviewMouseDown
定义为
private void questionTitle_textBox_PreviewMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
questionTitle_textBox.SelectAll();
}
您可以尝试将触发器添加到您的文本框
<TextBox Name="questionTitle_textBox" Text="Question title" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="GotFocus">
<local:SelectAllAction />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
将 SelectAllAction.cs
添加到您的项目:
namespace YourNameSpace
{
public class SelectAllAction : TriggerAction<TextBox>
{
protected override void Invoke(object parameter)
{
if(this.AssociatedObject != null)
{
this.AssociatedObject.SelectAll();
}
}
}
}
您还需要向 XAML 添加两个名称空间才能使用触发器。我的项目名称是 WpfApplication1,因此您可能需要更改它:
xmlns:local ="clr-namespace:YourNameSpace"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
这个有效
<TextBox Name="questionTitle_textBox" Text="Question title" GotFocus="questionTitle_textBox_GotFocus" PreviewMouseLeftButtonDown="questionTitle_textBox_PreviewMouseLeftButtonDown"/>
在后面的代码中
private void questionTitle_textBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
TextBox tb = (sender as TextBox);
if (tb != null)
{
if (!tb.IsFocused)
{
e.Handled = true;
tb.Focus();
}
}
}
private void questionTitle_textBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox tb = (sender as TextBox);
if (tb != null)
{
tb.SelectAll();
}
}
我有一个文本框。单击它时,应选择 TextBox 的所有内容。解决方案是什么? 我试过的代码是:
<TextBox Name="questionTitle_textBox" Text="Question title" PreviewMouseDown="questionTitle_textBox_PreviewMouseDown"/>
函数questionTitle_textBox_PreviewMouseDown
定义为
private void questionTitle_textBox_PreviewMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
questionTitle_textBox.SelectAll();
}
您可以尝试将触发器添加到您的文本框
<TextBox Name="questionTitle_textBox" Text="Question title" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="GotFocus">
<local:SelectAllAction />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
将 SelectAllAction.cs
添加到您的项目:
namespace YourNameSpace
{
public class SelectAllAction : TriggerAction<TextBox>
{
protected override void Invoke(object parameter)
{
if(this.AssociatedObject != null)
{
this.AssociatedObject.SelectAll();
}
}
}
}
您还需要向 XAML 添加两个名称空间才能使用触发器。我的项目名称是 WpfApplication1,因此您可能需要更改它:
xmlns:local ="clr-namespace:YourNameSpace"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
这个有效
<TextBox Name="questionTitle_textBox" Text="Question title" GotFocus="questionTitle_textBox_GotFocus" PreviewMouseLeftButtonDown="questionTitle_textBox_PreviewMouseLeftButtonDown"/>
在后面的代码中
private void questionTitle_textBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
TextBox tb = (sender as TextBox);
if (tb != null)
{
if (!tb.IsFocused)
{
e.Handled = true;
tb.Focus();
}
}
}
private void questionTitle_textBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox tb = (sender as TextBox);
if (tb != null)
{
tb.SelectAll();
}
}