【问题标题】:Fire an event after Richtextbox Textchanged event在 Richtextbox Textchanged 事件之后触发事件
【发布时间】:2014-11-04 16:52:36
【问题描述】:

我正在编写一个词法分析器,并且我还希望我的文本编辑器更改关键字的颜色。打字的时候!像VS和...!但问题是在向其中添加文本之前,RichTextBox 的 TextChanged 事件会触发。

在将文本添加到 richTextBox 之后,是否有任何预定义的事件触发 write ?如果不是,我如何在输入文本后创建一个触发写入的内容!

PS:我正在编写一个 WPF 项目!

private void rtxMain_TextChanged (object sender, TextChangedEventsArgs e) {
   visual.getLastWord();
}

【问题讨论】:

  • TextChanged 事件在更改RichTextBox 的文本后触发。你如何得到它的文本?

标签: c# wpf events richtextbox


【解决方案1】:

TextChnaged 事件在更改RichTextBox 的文本后触发。这是它的一个工作示例:

private void richtextBox1_TextChanged(object sender, TextChangedEventArgs e)
{
    string text = new TextRange(richtextBox1.Document.ContentStart, richtextBox1.Document.ContentEnd).Text;
    MessageBox.Show(text);
}

无论我在richtextBox1 中输入什么,它都会在MessageBox 中显示完全相同的值。这意味着它在更改 Text 后触发事件。

【讨论】:

  • 那么为什么当我断点 textchanged 事件时我输入的字符没有显示在文本框中!当我在那里放置一个断点时,我输入的字符会在 getLastWord() 执行后立即添加到richtextbox!这就是我说这个的原因
  • @MohammadNej 无论你在说什么,你都没有说得很清楚。 TextChanged 在文本更改后触发。
【解决方案2】:

您可以使用 keyUp 事件,它会在键盘上的某个键松开时触发。

RichTextBox r = new RichTextBox();
r.KeyUp += (s, e) =>
{
    //your logic
};

您可能需要添加额外的逻辑来避免像 shift 这样的按键操作,这并不难,甚至可能没有必要。

【讨论】:

  • 我不行!当我跟踪我的应用程序时,keyUp 事件发生在 textChanged 之前,所以它没用:| !
  • 你做错了,keyup 事件在将字母写入richtextbox 后触发,因为字母是在按键上写的,并且在它之后不能发生按键
猜你喜欢
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
相关资源
最近更新 更多