c#winform编程,有8个复选框,怎样实现选中第1个复选框时,在textbox控件显示“a 1”,选中1、2复选框时,显示 “a 1 2”,选中3各复选框时,显示“a 1 2 3”,以此类推,选中n个复选框,text就显示“ a 1 2 .... n”。有代码参考的话更好
------解决思路----------------------
方法有很多种,可以使用StringBuilder或者List<string>作为全局变量,伴随复选框的选取与否,维护全局变量
//定义一个全局变量
StringBuilder sb = new StringBuilder("a");
//把checkbox的名称设置成chkn(n=1、2、3...n), 各个checkbox触发事件调用下面的方法
void SetCheckedItem(string chkName,bool remove)
{
string str = chkName.Substring(chkName.Length - 1,1);
if(remove)
{
str = sb.ToString().Replace(" " + str,"");
sb = new StringBuilder(str);
}
else
sb.Append(" " + str);
TextBox.Text = sb.ToString();
}
只是一种参考(手打的代码,可能有误)
------解决思路----------------------
private void Form1_Load(object sender, EventArgs e)
{
Random rd = new Random();
var max = rd.Next(10) + 1;
for (var i = 0; i < max; i++)
{
CheckBox cb = new CheckBox();
cb.Tag = i;
cb.Text = string.Format("Box{0}", i);
cb.Click += cb_Click;
cb.Width = 70;
cb.Height = 20;
cb.Location = new Point()
{
X = i % 3 * 80,
Y = i / 3 * 40
};
this.panel1.Controls.Add(cb);
}
}
void cb_Click(object sender, EventArgs e)
{
StringBuilder tmp = new StringBuilder();
tmp.Append("a ");
foreach (var control in this.panel1.Controls)
{
var cb = control as CheckBox;
if (cb != null && cb.Checked)
{
tmp.Append(cb.Tag + " ");
}
}
this.textBox1.Text = tmp.ToString();
}
form上就简单的一个Panel和一个TextBox,那个就没必要有代码了吧?