日期:2014-05-18  浏览次数:20833 次

C#复选框CheckBox控件实现问题
想在C#窗体程序程序中,实现这样一个功能,首先在窗体上有一个GroupBox容器,GroupBox容器(GroupBox1.Text = "爱好")里有2个CheckBox(复选框)
  CheckBox1.Text = "音乐";
  CheckBox2.Text = "文学";
在GroupBox上面有一个Label控件,用来显示你选择的爱好

  我是这样写的
C# code

private void checkBox1_CheckedChanged(
                    object sender,EventArgs e)
{    String text1=“你的爱好是:”;
     //checkBox1是标题为"音乐"的多选框控件
if(checkBox1.Checked)
        text1=text1+checkBox1.Text;
 //checkBox2是标题为"文学"的多选框控件
if(checkBox2.Checked)
        text1+=checkBox2.Text;
label1.Text=text1;
}     

 

可是,这和我想实现的不同,我想实现的是只点击“音乐”时,Label控件显示“你的爱好是:音乐”
  只点击“文学”时,Label控件显示“你的爱好是:文学” 
  同时点击“音乐”和“文学”时,显示“你的爱好是:音乐文学”
  在“音乐”和“文学”都点击的情况下,取消点击“文学”。显示“你的爱好是:音乐”

  我想了好久老是出现各种的重复或者不显示,求指导!
 

------解决方案--------------------
C# code

 private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
                label1.Text += checkBox1.Text;
            else
            {             
                label1.Text = label1.Text.Replace(checkBox1.Text,"");
            }
        }

        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox2.Checked)
                label1.Text += checkBox2.Text;
            else
            {               
                label1.Text = label1.Text.Replace(checkBox2.Text,"");
            }
        }

------解决方案--------------------
正确
我提供另一种方法,可以封装以备后用
C# code

        private void showText(string title)
        {
            string str = string.Empty;
            if (checkBox1.Checked && !checkBox2.Checked)
                str = checkBox1.Text;
            if (checkBox2.Checked && !checkBox1.Checked)
                str = checkBox2.Text;
            if (checkBox1.Checked && checkBox2.Checked)
                str = checkBox1.Text + checkBox2.Text;
            label1.Text = title + str;
        }
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            showText("你的爱好是:");

        }

        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            showText("你的爱好是:");
        }