轉貼 使用列舉的方式取得列表

摘要:轉貼 使用列舉的方式取得列表

本文轉貼自我 MSN ShareSpace 2005/6/25 的 使用列舉的方式取得列表

與上週一樣的範例,不同之處只是使用了列舉的方式,而不是笨笨的一個一個列出。總算是試用了 foreach

  1. /* 
  2.  * Created by 記事本 tongue-out 
  3.  * User: Lee, Dong-Liang  dllee@edirect168.com 
  4.  * Date: 2005/06/25 
  5.  */  
  6. using System;  
  7. using System.Drawing;  
  8. using System.Drawing.Drawing2D;  
  9. using System.Windows.Forms;  
  10.   
  11. namespace ItemOfComboBox  
  12. {  
  13.  public class MainForm : System.Windows.Forms.Form  
  14.  {  
  15.   private System.Windows.Forms.ComboBox cBoxHatchStyle;  
  16.   private System.Windows.Forms.Button SelectColor;  
  17.   private System.Windows.Forms.Button SelectBKColor;  
  18.   
  19.   public MainForm()  
  20.   {  
  21.    // cBoxHatchStyle  
  22.    this.cBoxHatchStyle = new System.Windows.Forms.ComboBox();  
  23.    this.cBoxHatchStyle.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;  
  24.    this.cBoxHatchStyle.Location = new System.Drawing.Point(20, 10);  
  25.    this.cBoxHatchStyle.Name = "cBoxHatchStyle";  
  26.    this.cBoxHatchStyle.Size = new System.Drawing.Size(200, 20);  
  27.    this.cBoxHatchStyle.TabIndex = 16;  
  28.    this.cBoxHatchStyle.SelectedIndexChanged += new System.EventHandler(this.CBoxHatchStyleSelectedIndexChanged);  
  29.   
  30.    // SelectColor  
  31.    this.SelectColor = new System.Windows.Forms.Button();  
  32.    this.SelectColor.BackColor = System.Drawing.Color.Blue;  
  33.    this.SelectColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;  
  34.    this.SelectColor.Location = new System.Drawing.Point(250, 10);  
  35.    this.SelectColor.Name = "SelectColor";  
  36.    this.SelectColor.TabIndex = 8;  
  37.    this.SelectColor.Text = "Color1";  
  38.    this.SelectColor.Click += new System.EventHandler(this.SelectColorClick);  
  39.   
  40.    // SelectBKColor  
  41.    this.SelectBKColor = new System.Windows.Forms.Button();  
  42.    this.SelectBKColor.BackColor = System.Drawing.Color.Yellow;  
  43.    this.SelectBKColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat;  
  44.    this.SelectBKColor.Location = new System.Drawing.Point(350, 10);  
  45.    this.SelectBKColor.Name = "SelectBKColor";  
  46.    this.SelectBKColor.TabIndex = 15;  
  47.    this.SelectBKColor.Text = "Color2";  
  48.    this.SelectBKColor.Click += new System.EventHandler(this.SelectBKColorClick);  
  49.   
  50.    // MainForm  
  51.    this.ClientSize = new System.Drawing.Size(600, 400);  
  52.    this.Controls.Add(this.cBoxHatchStyle);  
  53.    this.Controls.Add(this.SelectColor);  
  54.    this.Controls.Add(this.SelectBKColor);  
  55.    this.Name = "MainForm";  
  56.    this.Text = "ItemOfComboBox : HatchSytle Example by http://dllee.ktop.com.tw";  
  57.    this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form_Paint);  
  58.    this.ActiveControl = this.cBoxHatchStyle;  
  59.   
  60.    // C# 的 comboBox 可以直接加入物件,它似乎會自己取 .ToString() 的方法  
  61.    // 得到字串作列表,而加入的物件之後可以直接取出使用。  
  62.    // <2005-06-25> 使用列舉的方式取得列表。  
  63.    Array hsList = Enum.GetValues( typeof( HatchStyle ) );  
  64.     foreach ( HatchStyle hs in hsList )  
  65.      this.cBoxHatchStyle.Items.Add(hs);  
  66.    this.cBoxHatchStyle.SelectedIndex=1;  
  67.   }  
  68.     
  69.   [STAThread]  
  70.   public static void Main(string[] args)  
  71.   {  
  72.    Application.Run(new MainForm());  
  73.   }  
  74.   
  75.   void SelectColorClick(object sender, System.EventArgs e)  
  76.   {  
  77.    ColorDialog clrDlg = new ColorDialog();  
  78.    clrDlg.Color = this.SelectColor.BackColor;  
  79.    if (clrDlg.ShowDialog() == DialogResult.OK)  
  80.    {  
  81.     this.SelectColor.BackColor = clrDlg.Color;  
  82.     this.Invalidate();  
  83.    }  
  84.    clrDlg.Dispose();  
  85.   }  
  86.     
  87.   void SelectBKColorClick(object sender, System.EventArgs e)  
  88.   {  
  89.    ColorDialog clrDlg = new ColorDialog();  
  90.    clrDlg.Color = this.SelectBKColor.BackColor;  
  91.    if (clrDlg.ShowDialog() == DialogResult.OK)  
  92.    {  
  93.     this.SelectBKColor.BackColor = clrDlg.Color;  
  94.     this.Invalidate();  
  95.    }  
  96.    clrDlg.Dispose();  
  97.   }  
  98.   
  99.   void Form_Paint(object sender, System.Windows.Forms.PaintEventArgs e)  
  100.   {  
  101.    Graphics g = e.Graphics;  
  102.    // 物件轉換成其他類別  
  103.    HatchStyle selectedHatchStyle = (HatchStyle)Convert.ChangeType(  
  104.      this.cBoxHatchStyle.SelectedItem,typeof(HatchStyle));  
  105.    // Create a hatch brush with selected hatch style and colors  
  106.    HatchBrush brush = new HatchBrush(selectedHatchStyle,  
  107.      this.SelectColor.BackColor, this.SelectBKColor.BackColor);  
  108.    // Fill rectangle  
  109.    g.FillRectangle(brush, this.ClientRectangle);  
  110.    // Dispose of objects  
  111.    brush.Dispose();  
  112.   }  
  113.   
  114.   void CBoxHatchStyleSelectedIndexChanged(object sender, System.EventArgs e)  
  115.   {  
  116.    this.Invalidate();  
  117.   }  
  118.  }