C# richtextbox中的可单击文本
我想通过c#中的代码生成一个可点击的文本(它不是URL,只是普通文本),所以当我点击该文本时,它不会链接点击事件。 这是一本字典,所以当我搜索某个东西时,在描述中有一个单词与存储中的相同,我可以单击它来搜索该单词C# richtextbox中的可单击文本,c#,richtextbox,C#,Richtextbox,我想通过c#中的代码生成一个可点击的文本(它不是URL,只是普通文本),所以当我点击该文本时,它不会链接点击事件。 这是一本字典,所以当我搜索某个东西时,在描述中有一个单词与存储中的相同,我可以单击它来搜索该单词 for (int j = 0; j <= jml[i]; j++) { richTextBox4.AppendText(j + 1 + ". "); string[] desk = sk[i, j].Split('
for (int j = 0; j <= jml[i]; j++)
{
richTextBox4.AppendText(j + 1 + ". ");
string[] desk = sk[i, j].Split(' ');
for (int l = 0; l < desk.Count(); l++)
{
for (int m = 0; m < kata.Count(); m++)
{
if (desk[l] == kata[m])
{
richTextBox4.SelectionColor = Color.Blue;
desk[l] = LinkArea;
}
}
richTextBox4.AppendText(desk[l] + " ");
richTextBox4.SelectionColor = Color.Black;
}
richTextBox4.AppendText("\n");
}
for(int j=0;j没有内置的方法,但如果您知道自己想要什么,构建起来并不困难
- 第一步是决定可点击文本是如何定义的,内容如下:分隔符是什么
- 如果你想要单个单词,这是相当容易的。一种方法是使用正则表达式来识别RTB中的单词。如果你不喜欢内置的定义单词的方法,我可以发布一个带有用户定义分隔符的代码。但是也许你对已经有了的东西感到满意
- 如果您需要整个短语(包括空格)作为一个整体进行单击,那么您必须更具创造性:
- 您可以在短语周围添加特殊字符
- 也可以使用不可破坏的空间替换这些空间
- 或者你可以在你的文本中写一张完整的地图,但这可能违背了你的目的
- 除了简单的单词外,任何东西都意味着你需要对文本进行一些修改
结果应该是一个函数,可以找到可单击文本的开始和结束,并返回已单击的单词/短语
- 第二步是在
字典中查找文本
,并对值执行您想要执行的操作,例如,在标签中显示翻译:
- 为此,您必须首先通过添加键-值对来准备字典:键是可单击的文本,值是您需要查找的任何内容:
以下是您可以如何使用它:
private void richTextBox1_MouseClick(object sender, MouseEventArgs e)
{
string word = getWordAtIndex(richTextBox1, richTextBox1.SelectionStart);
if (dictEnGE.ContainsKey(word)) aLabel.Text = dictEnGE[word];
}
你的问题是什么?如何在没有www的情况下制作可点击的文本。你的问题解决了吗?
Dictionary<string, string> dictEnGE = new Dictionary<string, string>();
dictEnGE.Add("house", "Haus");
dictEnGE.Add("man", "Mann");
dictEnGE.Add("mouse", "Maus");
//..
string getWordAtIndex(RichTextBox RTB, int index)
{
string wordSeparators = " .,;-!?\r\n\"";
int cp0 = index;
int cp2 = RTB.Find(wordSeparators.ToCharArray(), index);
for (int c = index; c > 0; c--)
{ if (wordSeparators.Contains(RTB.Text[c])) { cp0 = c + 1; break; } }
int l = cp2 - cp0;
if (l > 0) return RTB.Text.Substring(cp0, l); else return "";
}
private void richTextBox1_MouseClick(object sender, MouseEventArgs e)
{
string word = getWordAtIndex(richTextBox1, richTextBox1.SelectionStart);
if (dictEnGE.ContainsKey(word)) aLabel.Text = dictEnGE[word];
}