• 调用Combobox的DrawItem和MeasureItem事件设置项字体的颜色和大小以及项的高度和宽度


     1 //窗体上添加一个名为comboBox2的combobox
     2private void Form1_Load(object sender, EventArgs e)
     3{
     4            this.comboBox2.DrawMode = DrawMode.OwnerDrawFixed;
     5            this.comboBox2.DataSource = new String[] "One""Two""Three" };
     6
     7            this.comboBox2.MeasureItem+=new MeasureItemEventHandler(comboBox2_MeasureItem);
     8            this.comboBox2.DrawItem += new DrawItemEventHandler(comboBox2_DrawItem);
     9}

    10
    11
    12
    13/// <summary>
    14/// 设置文字底框的高度和宽度
    15/// </summary>

    16private void comboBox2_MeasureItem(object sender, MeasureItemEventArgs e)
    17{
    18
    19           //根据项的索引设置底框高度
    20            switch (e.Index)
    21            {
    22                case 0:
    23                    e.ItemHeight = 15;
    24                    break;
    25                case 1:
    26                    e.ItemHeight = 20;
    27                    break;
    28                case 2:
    29                    e.ItemHeight = 25;
    30                    break;
    31            }

    32            e.ItemWidth = 20;//设置项的宽度
    33}

    34
    35/// <summary>
    36/// 设置文字的颜色,也可以设置大小
    37/// </summary>
    38/// <param name="sender"></param>
    39/// <param name="e"></param>

    40private void comboBox2_DrawItem(object sender, DrawItemEventArgs e)
    41 {
    42            Brush myBrush = Brushes.Black;
    43
    44            e.DrawBackground();
    45
    46
    47            //根据项的索引设置字体颜色
    48            switch (e.Index)
    49            {
    50                case 0:
    51                    myBrush = Brushes.Gray;
    52                    break;
    53                case 1:
    54                    myBrush = Brushes.LawnGreen;
    55                    break;
    56                case 2:
    57                    myBrush = Brushes.Tan;
    58                    break;
    59            }

    60
    61            //如果要设置大小则定义一个新的Font,用于替换e.Font
    62            e.Graphics.DrawString(this.comboBox2.Items[e.Index].ToString(), e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
    63            e.DrawFocusRectangle();
    64}

    65

    该代码从MSDN摘取,但经过简化和测试!

  • 相关阅读:
    [LeetCode] Search for a Range
    [C++] extern关键字的作用
    [LeetCode] Sentence Similarity
    [LeetCode] Flood Fill
    [LeetCode] Can Place Flowers
    [LeetCode] Intersection of Two Linked Lists
    [LeetCode] My Calendar II
    [LeetCode] My Calendar I
    [LeetCode] Self Dividing Numbers
    [LeetCode] Range Sum Query
  • 原文地址:https://www.cnblogs.com/gossip/p/1300974.html
Copyright © 2020-2023  润新知