2012年3月27日 星期二

C# 拋棄switch 以列舉名稱 動態應用

列舉的好處在於使值可命名具有意義

例如


TextBox1.ForeColor = Color.Yellow;

如果想讓使用者自己改顏色,不用多想很自然會放個下拉選單

固定幾個不會變動的話,就直接把項目add進items


DropDownList1.Items.Add("Red");
DropDownList1.Items.Add("Blue");
DropDownList1.Items.Add("Green");

...

選完之後呢就用switch


switch (DropDownList1.SelectedValue) {
    case "Red":
        TextBox1.ForeColor = Color.Red;
        break;
    case "Blue":
        TextBox1.ForeColor = Color.Blue;
        break;
    case "Green":
        TextBox1.ForeColor = Color.Green;
        break;
}

 

 

 

 

等等...如果我要把所有顏色都列出來呢?

難道有幾個顏色就case...

歐弗寇斯納特


//將列舉名稱加入下拉選單
protected void Page_Load(object sender, EventArgs e) {
    if (!IsPostBack) {
        //列舉型別 KnownColor 已知的系統色彩,Color 是結構型別
        foreach (string name in Enum.GetNames(typeof(KnownColor))) {
            DropDownList1.Items.Add(name);
        }
    }
}
//將下拉選單值取出並給物件屬性設定列舉值
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) {
    TextBox1.ForeColor = Color.FromKnownColor((KnownColor)Enum.Parse(typeof(KnownColor), DropDownList1.SelectedValue, false));
}

以上

沒有留言:

張貼留言