我试图在c#中创建一个简单的词法分析器。
我有2个富文本框,第1个框将输入代码,第2个框将显示输出。
代码:
private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.Text.Contains("public"))
richTextBox2.Text = "public= id";
if (richTextBox1.Text.Contains("main"))
richTextBox2.Text = "main = id";
if (richTextBox1.Text.Contains("void"))
richTextBox2.Text = "void = id";
}
它总是只显示1场比赛.. 如果我的输入是“public static void main” 它只在richtextbox2中显示“public = id”。
为什么不显示主要或无效?
我是新手,任何帮助将不胜感激。谢谢:))
答案 0 :(得分:3)
您应该使用AppendText
代替。即:
if (richTextBox1.Text.Contains("public"))
richTextBox2.AppendText("public= id");
richTextBox2.Text = "someText"
实际上将richtextbox的文本设置为“someText”。因此,对于代码的每个满足if
条件,您的richtextobx2文本将被覆盖
答案 1 :(得分:1)
如果文本框中有“public static void main”,则代码将显示“void = id”。 这是因为每次代码找到它要查找的字符串时,它都会替换框值中的文本。
所以,要改变这一点,而不是使用:
richTextBox2.Text = ...
使用
richTextBox2.Text = richTextBox2.Text + ...
或
richTextBox2.Text += ...
这样您就可以将文本添加到文本框中。