gpt4 book ai didi

c# - 单击彩色字符串旁边时,richtextbox 让我使用该颜色而不是黑色

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:11 26 4
gpt4 key购买 nike

我有一个我使用的 richTextBox,这样用户就可以看到他们拥有的 XML 文件并让他们编辑它。我有一些代码可以将关键字颜色更改为我指定的颜色。这是我使用的方法:

private void CheckKeyword(string word, Color color, int startIndex)
{
if (this.richTextBox.Text.Contains(word))
{
int index = -1;
int selectStart = this.richTextBox.SelectionStart;
while ((index = this.richTextBox.Text.IndexOf(word, (index + 1))) != -1)
{
this.richTextBox.Select((index + startIndex), word.Length);
this.richTextBox.SelectionColor = color;
this.richTextBox.Select(selectStart, 0);
this.richTextBox.SelectionColor = Color.Black;
}
}
}

问题是当我点击 near a coloured string , 我开始输入 in that specific colour.

我知道为什么会这样,但不知道如何解决。

最佳答案

您必须确定您的光标是否位于 KeyDown 的关键字区域“内部”,因此连接 KeyDown 事件并尝试使用此代码。我确信有一种更有效的方法来确定您的光标是否在括号内的关键字内,但这似乎可以完成工作:

void rtb_KeyDown(object sender, KeyEventArgs e) {
int openIndex = rtb.Text.Substring(0, rtb.SelectionStart).LastIndexOf('<');
if (openIndex > -1) {
int endIndex = rtb.Text.IndexOf('>', openIndex);
if (endIndex > -1) {
if (endIndex + 1 <= this.rtb.SelectionStart) {
rtb.SelectionColor = Color.Black;
} else {
string keyWord = rtb.Text.Substring(openIndex + 1, endIndex - openIndex - 1);
if (keyWord.IndexOfAny(new char[] { '<', '>' }) == -1) {
this.rtb.SelectionColor = Color.Blue;
} else {
this.rtb.SelectionColor = Color.Black;
}
}
} else {
this.rtb.SelectionColor = Color.Black;
}
} else {
this.rtb.SelectionColor = Color.Black;
}
}

关于c# - 单击彩色字符串旁边时,richtextbox 让我使用该颜色而不是黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38616110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com