c#用append追加字符串,为什么追加字符出现在显示textbox的左边?
思路:在一个groupbox上有很多checkbox选项,如:A/B/C/D/E/F等,我用一个foreach遍历该groupbox上的所有checkbox控件,如果是选...
思路:在一个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
请高手指点,谢谢! 展开
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
请高手指点,谢谢! 展开
3个回答
展开全部
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];
...
}
先放进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];
...
}
展开全部
看来你遍历的顺序是FEDCBA,当然也是这个结果。
你试试改改checkbox的TabIndex属性,使它们按ABCDEF从小到大。
如还不行,那就只能取出来再重新排序了
你试试改改checkbox的TabIndex属性,使它们按ABCDEF从小到大。
如还不行,那就只能取出来再重新排序了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为了避免和控件的顺序有关系,我建议你先将控件的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();
}
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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询