【问题标题】:Textbox.Select(0, 0) does not workTextbox.Select(0, 0) 不起作用
【发布时间】:2015-03-16 05:54:09
【问题描述】:

我开发了一个用于聊天的 Windows 应用程序。我正在使用多行文本框来输入聊天消息。输入消息后,用户必须按 Enter 或单击发送按钮才能将消息发送到另一端。这两个操作都调用 btnSend_Click()。这是代码

private void btnSend_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtChat.Text.Trim()))
            {
                CreateNewMessage(txtChat.Text.Trim());
                txtChat.Clear();
                txtChat.Select(0, 0);
            }
        }

但是 txtChat.Select(0, 0) 不会将光标带到文本框的最开头。按 Enter/ 或单击发送按钮后,光标始终会到达第二行的开始位置。为什么这段代码不起作用?请解释一下。请建议我解决此问题的方法。

P.S - 还有其他方法可以将光标定位在多行文本框的开头吗?

【问题讨论】:

  • 我不明白这个问题。您的代码在设置选择之前所做的事情是清除所有文本。如果以后控件中仍有文本,则它必须是在您设置选择之后添加的;但添加文本可以修改选择。如果您想在控件中添加/设置文本后将选择保留在开头,则需要在完成此操作后调用Select() 方法,而不是之前。请提供a good, minimal, complete code example,清楚地表明您的要求。
  • 你是说专注吗??
  • @PeterDuniho,我想将光标带到文本框的最开头。我认为 txtChat.Select(0, 0);应该这样做。但在我的情况下并没有发生。这是我的问题。感谢您考虑我的问题。

标签: c# visual-studio-2012 textbox multiline cursor-position


【解决方案1】:

这是为您解决问题的方法。请更换

txtChat.Clear();
txtChat.Select(0, 0);

txtChat.ResetText(); // it will reset the entire textbox once you click button.
txtChat.Focus(); // this will keep the focus back to text box and bring the cursor back to the very beginning of the textbox.

【讨论】:

  • @PeterDuniho,我想将光标带到文本框的最开头。我认为 txtChat.Select(0, 0);应该这样做。但在我的情况下并没有发生。这是我的问题。感谢您考虑我的问题。
  • @KushanRandima 请执行我的建议,它将解决问题。一旦用户单击Send 按钮,光标将到达文本框的开头。我已经在我的应用程序中实现了它,然后只建议你。
  • 我刚刚尝试了您的解决方案。对不起,它不适合我。即使我的应用程序是 Windows 窗体应用程序,我也使用 addin express 来开发它。此表格是 ADX 表格。有时它可能以不同的方式工作。一些我如何能够想出一个解决方法。 (通过添加 SendKeys.Send("{BACKSPACE}"); 作为我当前代码下方的最后一行)
  • 哦,有人对您的答案投了反对票。我为此感到抱歉。感谢您为解决我的问题所做的努力。干杯!
  • @KushanRandima 对不起:(。我认为它是一个普通的 Windows 窗体应用程序,所以想提出答案。Actaully 我没有足够的分数来评论这些建议,所以我不得不把它作为答案帖子. 您没有使用 Visual Studio 作为您的 IDE 进行开发?您在尝试此建议时遇到了什么错误?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 2013-07-19
  • 2014-12-17
  • 2018-06-02
相关资源
最近更新 更多