1. 程式人生 > >C# 公共控制元件之RadioBox ,CheckBox

C# 公共控制元件之RadioBox ,CheckBox

通常RadioBox稱為單選按鈕,CheckBox稱為多選按鈕,這兩個控制元件都是從ButtonBase類中派生,可以將其視為按鈕。

  多個checkBox之間的選擇是互相獨立的,互補影響。多個RadioButton之間是互斥的,只能選擇其中一個。同一個容器下的多個RadioButton之間互斥,來自不同容器的RadioButton 物件是相對獨立的。

RadioButton和CheckBox控制元件都有一個Checked屬性,如果控制元件處於選擇狀態,則Checked屬性的值為true否則為false。當選擇狀態發生改變後會引發CheckedChanged事件,可以通過這個事件開實時得知控制元件的選擇狀態。

1、建立這樣的一個視窗 ,使用了CheckBox和RadioBox控制元件

 

2、新增兩個label控制元件(用作資訊輸出)

3、為每一個checkbox 新增一個CheckBox共享處理事件 CheckedChanged當發生改變的時候出發該事件

4、在OncheckChanged新增如下程式碼

private void OnCheckChanged(object sender, EventArgs e)
        {
            DisplayCheckResults();//呼叫自定義方法
        }

        private void DisplayCheckResults()
        {
            if (label1 != null)
            {
                //建立一個List<string>例項
                List<string> strList = new List<string>();
                //將被選中的CheckBox的Text屬性的內容新增到列表中
                if (checkBox1.Checked)
                    strList.Add(checkBox1.Text);
                if (checkBox2.Checked)
                    strList.Add(checkBox2.Text);
                if (checkBox3.Checked)
                    strList.Add(checkBox3.Text);
                if (checkBox4.Checked)
                    strList.Add(checkBox4.Text);

                //字元拼接   串聯字串陣列的所有元素,其中在每個元素之間使用指定的分隔符。
                // public static String Join(String separator, params String[] value);
                string res = string.Join("、", strList.ToArray());
                //判斷是否全部都沒有被選擇,如果全部都沒有被選擇清除label1.text
                if ((checkBox1.Checked == false) && (checkBox2.Checked == false) && (checkBox3.Checked == false) && (checkBox4.Checked == false))
                    label1.Text = "";
                else
                    // 將指定字串中的一個或多個格式項替換為指定物件的字串表示形式。
                    label1.Text = string.Format("翻牌子:{0}", res);
            }
        }

5、為每一個RadioButton新增點選共享事件

 

6、在共享事件中輸入程式碼

private void OnClick(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
                label2.Text = string.Format("{0}", radioButton1.Text);
            else if (radioButton2.Checked)
                label2.Text = string.Format("{0}", radioButton2.Text);
            else if (radioButton3.Checked)
                label2.Text = string.Format("{0}", radioButton3.Text);
            else label2.Text = "";
        }

 

 

7、執行效果