CheckedListBox自定义绘制技巧

   2024-09-30 2400
核心提示:CheckedListBox 是一个 Windows Forms 控件,用于显示带有复选框的项目列表设置 DrawMode 属性:将 CheckedListBox 的 DrawMode

CheckedListBox 是一个 Windows Forms 控件,用于显示带有复选框的项目列表

设置 DrawMode 属性:将 CheckedListBoxDrawMode 属性设置为 OwnerDrawFixedOwnerDrawVariable。这将允许你自定义项目的绘制方式。
checkedListBox1.DrawMode = DrawMode.OwnerDrawFixed;
处理 DrawItem 事件:为 CheckedListBox 控件的 DrawItem 事件添加一个事件处理程序。在此处理程序中,你可以自定义项目的绘制方式。
checkedListBox1.DrawItem += CheckedListBox1_DrawItem;
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 控件的自定义绘制。你可以根据需要调整绘制代码,以实现所需的外观和样式。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号