当前位置: 代码迷 >> C# >> CheckBox复选框编程的有关问题
  详细解决方案

CheckBox复选框编程的有关问题

热度:19   发布时间:2016-05-05 04:19:13.0
CheckBox复选框编程的问题
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,那个就没必要有代码了吧?
  相关解决方案