【问题标题】:Making the arrow keys function in a WinForm TextBox just like an HTML input field?使 WinForm TextBox 中的箭头键像 HTML 输入字段一样起作用?
【发布时间】:2012-04-15 20:55:47
【问题描述】:

使用箭头键时,如果我们可以通过按下到达底行的末尾,或者通过按下等效的方式移动到上行的开头,文本框的导航速度会更快。如果您在带有 HTML 输入或 textarea 的网页中尝试它,这是有效的。但是对于 Windows 窗体文本框控件,它与记事本具有相同的行为。当您按下向下或向上箭头键时,它会将光标从整个文本的末尾或开头移动。它也应该在使用向上和向下箭头键突出显示文本时表现出来。

关于如何在 C# 或 vb.Net 中实现这一点有什么想法吗?提前致谢。

这是当前工作的高亮显示,但仅适用于 shift+Down 键:

if ((keyData == (Keys.Shift | Keys.Down))) {
if (ctl is TextBoxMaskBox) {
    var edit = ctl as TextBoxMaskBox;

    int selectionLength = edit.MaskBoxSelectionLength;
    int remTextLength = edit.MaskBoxText.Length - edit.MaskBoxSelectionLength;
    string remText = edit.MaskBoxText.Substring(selectionLength, remTextLength);

    if (remText.IndexOf(Environment.NewLine) == -1) {
        edit.MaskBoxSelectionLength = edit.MaskBoxText.Length;
        return true;
    }
}

}

【问题讨论】:

  • @Yahia,编辑了问题并提供了上面的当前工作代码。

标签: c# .net winforms


【解决方案1】:

您在这里谈论的是两个不同的平台。果然,无论您在 textarea 的底行中的哪个位置,按 DOWN 都会将您移动到该行的末尾。

我想大多数人会使用 End 键到达当前行的末尾,或者 Ctrl + End 到达整个文本输入区域的末尾。

这对于网络和 Windows 应用程序是通用的,我想问有多少人甚至知道网络特定的行为。我怀疑大多数人会将他们的期望从 Windows 转移到网络上并继续使用 End 等。

【讨论】:

  • 我们的客户用户希望这种功能具有与 HTML 输入相同的行为。
  • 我不知道他们为什么要这个。我的想法是他们习惯了 html 输入 web 控件,或者由于我们的客户是瑞典人,可能对他们来说太多了,或者很难使用瑞典语键盘按 Ctrl+End 或 Shift+End。不过我还没试过瑞典语键盘。
猜你喜欢
  • 1970-01-01
  • 2019-01-23
  • 1970-01-01
  • 2020-07-31
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 1970-01-01
相关资源
最近更新 更多