c#用append追加字符串,为什么追加字符出现在显示textbox的左边?

思路:在一个groupbox上有很多checkbox选项,如:A/B/C/D/E/F等,我用一个foreach遍历该groupbox上的所有checkbox控件,如果是选中状态,将该checkbox的内容显示在一个叫txtZhunJia的文本框里。代码如下:
private void checkboxState() //遍历 groupBox2上所有的checkbox控件
{

StringBuilder sb=new StringBuilder();
foreach (Control con in this.groupBox2.Controls)
{
if (con.GetType().ToString() == "System.Windows.Forms.CheckBox")
{
if ((con as CheckBox).CheckState == CheckState.Checked)
{
con.ForeColor = Color.Red;
sb.Append(con.Text.ToString());
}
else
{
con.ForeColor = Color.Black;
}
}
}
txtZhunJia.Text = sb.ToString();
}
我想要的结果是:ABCDEF
但得到的结果是:FEDCBA
请高手指点,谢谢!

groupbox中后加上去的控件是放在前面的,比如
先放进A,此时groupBox1.Controls[0]就是A;
再放进B,此时groupBox1.Controls[0]是B,groupBox1.Controls[1]是A;
所以你可以改变控件放入的顺序,如第一个放进F,第二个E...
或者改用insert
sb.Insert(0,con.Text.ToString());
或者直接用for语句逆序遍历
for (int i = groupBox2.Controls.Count-1; i >= 0; i--)
{
CheckBox con = (CheckBox)groupBox2.Controls[i];
...
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-21
看来你遍历的顺序是FEDCBA,当然也是这个结果。

你试试改改checkbox的TabIndex属性,使它们按ABCDEF从小到大。

如还不行,那就只能取出来再重新排序了
第2个回答  2009-08-21
为了避免和控件的顺序有关系,我建议你先将控件的Text放到char[]数组中对它排序后再转换成字符串。给你个例子:
static void Main(string[] args)
{
char[] a = new char[6];
a[0] = 'B'; a[1] = 'C';
Array.Sort(a);
string str = new string(a);
Console.WriteLine(str.Trim((char)0));//去掉值为0的字符
Console.Read();
}

C#里的richTextBox1.AppendText是什么意思,与Append有什么不同于联系...
举个例子,比如单击一个按钮,在此过程中写了这个语法:textbox.appendtext();意思就是每次单击这个按钮,就会在文本框中显示你括号里面的内容;append英语翻译过来是“添加附加"的意思.所以就是在文本框中添加你想添加的任何内容。

C#计算器 (要求:一个textbox接受输入一个计算按钮一个显示结果的textbo...
使用StringBuilder 这个去添加单击按钮的字符 如按 1 就添加 1 进去 private void button1_Click(object sender, EventArgs e) { Button btnSender = (Button)sender; StringBuilder builder = new StringBuilder(); builder.Append(btnSender.Text); textBox1.Text=builder.ToString(); } 在把所有你要实现功能的...

C# 如何在文本文件中添加数据而不清除原来的内容?
从MSDN可查到StreamWriter的构造函数public StreamWriter(string path,bool append)所以 string s = "C:\\\\hero.txt";StreamWriter sw = new StreamWriter(@s,true);\/\/true表示追加 sw.Write(translate(this.textBox1.Text));sw.Flush();sw.Close();...

如何将C#中的textbox的滚动条移动到最后一行
在C#中,给textbox添加文本后,都希望给用户将最新的内容显示出来,自然会希望textbo自动滚动到最后一行,这样大家都能注意到最新的信息。但是如果使用txtbox.Text+=stringtmp;的方式,则不能将光标和滚动条移动到最后一行,需要使用Append命令添加的字符串,才能使textbox移动到最后一行。

c#怎么多次给文本框赋值怎么不覆盖原来的内容
如果你要每次都在其后连接新的字符串,用StringBuilder对象吧。用法如下 StringBuilder sb=new StringBuilder()string str1=this.textbox1.text;sb.append(str1);string str2="这里是你要添加的新的值";sb.append(str2);this.textbox1.text=sb;如果是有规律的字符串,还可以考虑用循环。

C#中如何将一行多个字符串写到textbox里一行显示?
textBox1.Text = string.Join(",",ax);\/\/第1个参数是分隔符,本例是逗号,你可以替换为其它符号

请问用c#将一100000字符以上的字符串赋给文本框时停止响应怎么解决...
其实不是停止响应,是TextBox追加的时候,很耗时间 下面是我测试用的代码,如果直接执行下面的代码,追加10万个字符,花了我好长时间(途中取消了)如果换成执行注释部分的话,就停止响应了。所以呢我想也许多等一会儿就行了吧,果然放着不动静静等待的话,等了大概30秒表示出来了。StringBuilder output ...

C#中Append与AppendFormat有什么区别
Append是追加。AppendFormat是追加的数据格式。不是一个类型的。

C# 写入文本时总是覆盖
Append吧 StreamWriter streamWriter = null;fileStream = new FileStream(path, FileMode.Append, FileAccess.Write);另外也可以用FileInfo的AppendText方法 如果你想追加到后面,起始你直接读出来然后加上,再用你的“覆盖”操作不就行了?

C#读取大容量Txt文件的问题
其次,多线程输出到RichTextBox显然画蛇添足,反而会导致RichTextBox中的内容顺序跟文件可能不一致,因为开启多线程之后顺序是不一定的 第三,多线程开销是很大的,你这短时间内while循环那么多次就开启了大量的多线程,每个线程就给RichTextBox赋值这太浪费了 至于性能问题,跟其他几位说的一样,瓶颈在...

相似回答