作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
How to automatically select all text on focus in WPF TextBox?
(33 个答案)
How to select all text in TextBox WPF when focused?
(2 个回答)
去年关闭。
编辑: WPF 标签是一个错误,这是 winforms。
我有一个 TextBox
我希望在用户单击它时突出显示其中的所有文本(以便他们可以轻松替换它)。我有以下事件处理程序链接到 TextBox
:
private void TextBox_Enter(object sender, EventArgs e) {
SelectAll();
}
但是当我点击
TextBox
文本只被选中了几分之一秒(有时它太快了,我根本看不到它),然后它又回到了光标状态。有谁知道如何解决这个问题,或者是否有任何相对简单的解决方法?谢谢。
TextBox.MouseClick
尝试了同样的事情事件(它突出显示了文本),但因为它是
MouseClick
每次单击
TextBox
时,文本都会突出显示(即使
TextBox
已经有了焦点)。
SelectionStart = 0; SelectionLength = Text.Length
但同样的事情也会发生。这让我相信这个问题与事件有关。
TextBox.GotFocus
事件并有完全相同的问题。
最佳答案
您没有看到文本被选中的原因是 TextBox
当其中一个事件发生时(例如,插入符号定位)是忙碌的。您实际上选择了文本,然后是 TextBox
的内部事件处理程序执行并删除选择,例如通过设置插入符号位置。
您所要做的就是等到内部事件处理程序完成。
您可以使用 Dispatcher
.当您调用 Dispatcher
异步委托(delegate)不会立即执行,而是在所有先前排队的操作(如内部事件处理程序)从调度程序队列中清除后排队并执行。
所以使用 TextBox.GotFocus
WPF 中的事件(或 WinForms 中的 TextBox.Enter
)和异步 Dispatcher
会成功的:
WPF
private async void SelectAll_OnTextBoxGotFocus(object sender, RoutedEventArgs e)
{
await Application.Current.Dispatcher.InvokeAsync((sender as TextBox).SelectAll);
}
private void SelectAll_OnTextBoxEnter(object sender, EventArgs e)
{
var textBox = sender as TextBox;
textBox.BeginInvoke(new Action(textBox.SelectAll));
}
关于c# - 如何在鼠标单击时选择 TextBox 的所有文本? (TextBox.SelectAll() 不适用于 TextBox.Enter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59558368/
我是一名优秀的程序员,十分优秀!