这段代码有什么问题
在执行了button1_Click,在满足if的条件下,richTextBox4无输出。请大家指点下,谢谢!
using System;
using System.Collections.Generic;
.....
namespace InfoSearch
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
char[] Name = richTextBox1.Text.ToCharArray();
string a = Name[0].ToString();
string b = richTextBox2.Text.Trim();
string c = richTextBox3.Text.Trim();
string r1 = "";
string r2 = "";
richTextBox4.Text = r1.ToString() + r2.ToString();//输出if的结果
if ((a == "北" || a == "上") && (b == "地铁" || b == "公交"))
{
r1 = "拥堵";
}
else
r1 = "";
if ((a == "成" || a == "西") && (b == "铁路" || b == "飞机"))
{
r1 = "少量";
}
else
r1 = "";
if ((c == "游客" || c == "背包客") && (b == "铁路" || b == "飞机"))
{
r2 = "增加中";
}
else
r2 = "";
}
}
}
[最优解释]
请在if条件里再重新给 richTextBox4.Text 赋值,因为string类型是一种具有值类型特征的引用类型,虽然是引用类型,但把它赋值给了 richTextBox4.Text 后,其实也是像值类型一样重新克隆了一个 string的副本作为 richTextBox4.Text 的值了,所以你后面更改r1 或者r2的tostring 根本对 richTextBox4.Text 起不了作用,因为 richTextBox4.Text 只是你r1的tostring+r2 的tostring的副本,明白了吗?另外建议不要使用 richTextBox4.Text =“XXX”建议使用 richTextBox4.AppendText(r1.ToString())方法 ,不要直接给他Text赋值!严格来说,它应该接收的是rtf格式的
[其他解释]
1:如楼上几位所说,先将richTextBox4.Text = r1.ToString() + r2.ToString();放到最后
2:另外楼主代码逻辑有问题,if else不能乱用,修改如下
if ((a == "北"
[其他解释]
把你这行代码:richTextBox4.Text = r1.ToString() + r2.ToString();//输出if的结果
放到最好呀。你后面才对r1和r2赋值的,你怎么能期望前面设定的内容会自动更新呢?
另:那个r1和r2本身就是string类型,不需要ToString()了。
[其他解释]
是“放到最后”。
[其他解释]
将“richTextBox4.Text = ...”放在最后也没有输出
[其他解释]
那你就调试一下代码,看看最后给richTextBox4.Text的r1和r2的内容是什么。
[其他解释]
楼主很强大啊,先显示后计算,现实的出来才怪
[其他解释]
a == "上") && (b == "地铁"