【发布时间】: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