列舉系統的所有Color並以ComboBox顯示

  • 979
  • 0

摘要:列舉系統的所有Color並以ComboBox顯示

首先當然先利用Reflection的方式取得系統中的所有Color,將利Color的名子加到cmbColor中。

      Type type = typeof(Color);
      PropertyInfo[] propInfo = type.GetPropertiesBindingFlags.Static | BindingFlags.Public);
      var names = from color in propInfo
                  where color.Name != "Transparent"
                  select color.Name;
      cmbColor.Items.Clear();
      foreach (var item in names)
      {
        cmbColor.Items.Add(item);
      }
接著在cmbColor中自行繪制顯示的內容,在這邊需要將cmbColor中的屬性'DrawMode'設為'OwnerDrawFixed',並新的DrawItem事件
DrawItem事件的內容如下:
      Graphics g = e.Graphics;
      Rectangle rect = e.Bounds;
      if (e.Index >= 0)
      {
        string colorName = ((ComboBox)sender).Items[e.Index].ToString();
        Font font = new Font("Arial", 9, FontStyle.Regular);
        Color color = Color.FromName(colorName);
        Brush brush = new SolidBrush(color);
        g.FillRectangle(brushrect.X + 5 , rect.Y, 10, rect.Height);
        g.DrawString(colorNamefontBrushes.Blackrect.X + 15, rect.Top);
      }

以上。

============ 以下是簽名檔 ============

一個小小螺絲釘。

第一次建立Blog,希望以後能慢慢充實它。

Howard