2013年4月11日 星期四

可多項判斷的switch case: break; default:

利用下拉式選擇幾月份
switch帶入條件
case做季節判斷 並SHOW出訊息
直到break跳出程式區塊
default則是例外處理
來看下面範例

private void btn_true_Click(object sender, EventArgs e)
        {
            switch (cbox_select.SelectedIndex + 1)//Selectedindex由0開始所以+1
            {
                case 3://如果是3.4.5月
                case 4:
                case 5:
                    MessageBox.Show("春季", "提示!");
                    break;//跳出程式區塊
                case 6://如果是6.7.8月
                case 7:
                case 8:
                    MessageBox.Show("夏季", "提示!");
                    break;
                case 9:
                case 10:
                case 11:
                    MessageBox.Show("秋季", "提示!");
                    break;
                case 12:
                case 1:
                case 2:
                    MessageBox.Show("冬季", "提示!");
                    break;
                default://如果沒有選擇月份彈出提示訊息
                    MessageBox.Show("請選擇月份", "提示!");
                    break;
            }
        }


不只可以做數值判斷 也可以做 字串與布林的判斷

下面範例為 判斷 True與Flase


private void button1_Click(object sender, EventArgs e)
        {
            switch (radioButton1.Checked)
            {
                case true:
                    MessageBox.Show("true");
                    break;
                case false:
                    MessageBox.Show("false");
                    break;
            }
        }




再來是字串上的判斷範例如下


 private void button2_Click(object sender, EventArgs e)
        {
            switch (comboBox1.SelectedItem.ToString())
            {
                case "左楠":
                    MessageBox.Show("加油站");
                    break;
                case "NXP":
                    MessageBox.Show("半導體");
                    break;
                case "請選擇公司名稱":
                    MessageBox.Show("請點選下拉式清點選擇");
                    break;
            }
        }




上面程式碼在執行過程中 出了一點問題

來記錄一下在製作範例過程遇到的問題與排除方式
原因如下:
發現如果使用者,選空白選項時
不能使用default來使用例外處裡,原因是
在selectedindex為null值時,無法做ToString轉換
下面稍微研究 整理出幾套方法

本來想在combobox.Text直接輸入"請選擇"
結果不行? 因為
設定combobox的DropDownStyle是DropDownList
時不能對Text修改 改了按下ENTER之後一樣空白
後來才知道 要在ITEM加入"請選擇"
直接指定TEXT才可以
下面紀錄設定DropDownList又可以避免null的方法



第一招,直接在Item中新增一個"請選擇"
並且在 程式開啟時
設定combobox的text值為combobox.Item[0].ToString()
讓combobox保持在第一項新增的"請選擇"項目

下面範例同上,下面只是加入設定,combobox.text

private void Frm_Main_Load(object sender, EventArgs e)
{//item[0]以字串指定給text程式開啟瞬間已經設定好
  comboBox1.Text = comboBox1.Items[0].ToString();
}



@@再來查略一下控制項屬性
發現到一個更簡單的方法
可讓defalut發揮作用
紀錄如下

private void button2_Click(object sender, EventArgs e)
        {
            switch (comboBox1.Text)//直接判斷text就好
            {
                case "左楠":
                    MessageBox.Show("加油站");
                    break;
                case "NXP":
                    MessageBox.Show("半導體");
                    break;
                default:
                    MessageBox.Show("請選擇");
                    break;
            }
        }

沒有留言:

張貼留言