91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

CheckedListBox自定義繪制技巧

小樊
87
2024-09-03 13:47:05
欄目: 編程語言

CheckedListBox 是一個 Windows Forms 控件,用于顯示帶有復選框的項目列表

  1. 設置 DrawMode 屬性:將 CheckedListBoxDrawMode 屬性設置為 OwnerDrawFixedOwnerDrawVariable。這將允許你自定義項目的繪制方式。
checkedListBox1.DrawMode = DrawMode.OwnerDrawFixed;
  1. 處理 DrawItem 事件:為 CheckedListBox 控件的 DrawItem 事件添加一個事件處理程序。在此處理程序中,你可以自定義項目的繪制方式。
checkedListBox1.DrawItem += CheckedListBox1_DrawItem;
  1. DrawItem 事件處理程序中自定義繪制:在事件處理程序中,你可以使用 Graphics 對象和其他屬性(如 FontForeColor 等)來自定義項目的繪制方式。
private void CheckedListBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    // 獲取 CheckedListBox 控件
    CheckedListBox clb = (CheckedListBox)sender;

    // 繪制背景
    e.DrawBackground();

    // 獲取項目文本
    string itemText = clb.GetItemText(clb.Items[e.Index]);

    // 獲取項目的復選框狀態
    CheckState checkState = clb.GetItemCheckState(e.Index);

    // 自定義繪制復選框
    Rectangle checkBoxRect = new Rectangle(e.Bounds.X + 2, e.Bounds.Y + 2, 14, 14);
    ControlPaint.DrawCheckBox(e.Graphics, checkBoxRect, ButtonState.Normal | GetButtonState(checkState));

    // 自定義繪制項目文本
    Rectangle textRect = new Rectangle(e.Bounds.X + 20, e.Bounds.Y, e.Bounds.Width - 20, e.Bounds.Height);
    TextRenderer.DrawText(e.Graphics, itemText, clb.Font, textRect, clb.ForeColor, TextFormatFlags.Left | TextFormatFlags.VerticalCenter);

    // 繪制焦點框
    e.DrawFocusRectangle();
}

private ButtonState GetButtonState(CheckState checkState)
{
    switch (checkState)
    {
        case CheckState.Checked:
            return ButtonState.Checked;
        case CheckState.Indeterminate:
            return ButtonState.Mixed;
        default:
            return ButtonState.Normal;
    }
}

通過這些步驟,你可以實現 CheckedListBox 控件的自定義繪制。你可以根據需要調整繪制代碼,以實現所需的外觀和樣式。

0
武山县| 阿城市| 琼结县| 姚安县| 康乐县| 宜城市| 达拉特旗| 杭锦旗| 阿瓦提县| 内江市| 布尔津县| 耒阳市| 卓资县| 商水县| 手游| 高邮市| 平原县| 灵川县| 朝阳区| 丰镇市| 连山| 克东县| 怀柔区| 普兰店市| 鄂尔多斯市| 沈丘县| 临沭县| 枞阳县| 巴林左旗| 广平县| 拉萨市| 邵武市| 栾城县| 安化县| 清河县| 丹巴县| 昔阳县| 河池市| 杂多县| 大安市| 宁晋县|