【发布时间】:2021-04-16 22:52:03
【问题描述】:
我尝试模仿用户单击用户名字段(例如)时的行为,并且所有文本(名称)将被自动选择,以便更容易用新文本替换它。但是当用户再次单击该字段时,文本/名称变为未选中状态,因此用户可以继续从光标处写入文本。我相信每个人都知道我要描述什么,因为当我们在文本字段中书写或想要修改其内容时,我们都遇到过很多次......
所以问题是当我使用 Enter 焦点事件并应用 SelectAll() 时,根本不工作!文本仍未选中。我也尝试使用 Click 事件,效果很好,但是我在第二次单击时遇到了困难,因为所有鼠标单击再次运行 SelectAll() 方法,文本始终仍处于选中状态.. 可能我可以使用存储选择状态的全局变量文本和更改状态反之亦然,但如果不需要,我不想使用任何额外的变量(每个都适用于所有 TextBox...不)。
应该有一个简单而优雅的解决方案,因为多对多应用程序和网站使用这种行为来使用户的生活更轻松。我阅读了一些论坛并找到了一些解决方案,但它们看起来比我希望的要复杂得多。
这是我的代码的相关部分...没什么特别的!
private void G_tbx_canvasSize_Enter(object sender, EventArgs e)
{
(sender as TextBox).SelectAll();
}
这应该以这种方式工作:
- 用户点击文本框 (TB)
- 专注于结核病
- 代码运行并选择所有文本
- 用户再次点击 TB
- 由于这已经集中,代码将不会再次运行,因此默认情况下文本会取消选择自身。(我对此进行了测试!)
- 如果用户点击离开并再次点击 TB,一切都会一次又一次地运行..
请帮忙!我无法弄清楚为什么会发生这种情况,任何问题,它不应该发生......
提前致谢!
【问题讨论】:
标签: c# winforms events textbox click