【问题标题】:Add text (push) to textbox or richtextbox?向文本框或富文本框添加文本(推送)?
【发布时间】:2013-09-23 19:46:21
【问题描述】:

我正在尝试创建一个像 msn 这样的聊天应用程序。当我执行“textBox.Text = textBox.Text+text”时,它会更新文本框,并且不再选择我选择的文本。在 MSN 中,您可以选择文本并仍然接收不同颜色的消息等。他们是如何做到的?我认为它类似于推送消息,也许他们在另一个文本框下创建了一个新文本框?有什么线索吗?

我希望你们知道我在说什么。我只是希望我的文本表现得像 MSN 以前那样,而不是更新整个文本框,只是在当前消息下推送一条新消息等。

【问题讨论】:

  • 你在使用 WPF 吗?如果是这样,您应该在堆栈面板上放置一个 Scrollviewer,并在每次收到新消息时添加一个新文本框。
  • 他们可能从头开始写了所有这些东西..
  • 它不仅仅是一个文本框,你应该看到这个问题stackoverflow.com/questions/8795738/…
  • 他在问你使用的是 Windows Forms 还是 Windows Presentation Foundation
  • 哦,对不起.. Windows 窗体。

标签: c# textbox chat richtextbox msn


【解决方案1】:

如果我理解您的问题,您只是希望在将消息附加到 RichTextBox 时保持选中文本?

int selectionStart = textBox.SelectionStart;
int selectionLength = textBox.SelectionLength;
int carat = textBox.TextLength;

textBox.Text += Environment.NewLine;
textBox.Text += newText;

//optional styling code for newly appended text
textBox.Select(carat, newText.Length);
textBox.SelectionColor = //value;
//etc.

//reapply original selection
if(selectionStart >= 0 && selectionLength > 0)
{
    textBox.Select(selectionStart, selectionLength);
}

【讨论】:

  • 有点,您发布的代码确实如此,我可以想象。但文本框仍在更新,它不会在当前帖子下创建新帖子。
  • 我更新了代码。这就是你所追求的吗?您可以根据需要附加更多换行符来分隔消息。如果由于某种原因您不想将所有消息保留在同一个文本框中并使用格式将它们分开显示,那么您需要为每条消息创建所有新的文本框。但请注意在这种情况下您的内存使用情况。
  • 谢谢,我试试这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多