我在Windows窗体应用程序中有ComboBox
,其中需要显示项目,如下图所示。我只需要第一次分组的固体分隔符。其他项目只能显示没有分组标题。使用ComboBox
可以根据要求实现,或者我必须尝试任何第三方控件。任何有价值的建议都会有所帮助。
答案 0 :(得分:2)
您可以通过将ComboBox
设置为DrawMode
并处理OwnerDrawFixed
事件来自行处理DrawItem
的绘图项目。然后,您可以在所需的项目下绘制该分隔符:
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
var comboBox = sender as ComboBox;
var txt = "";
if (e.Index > -1)
txt = comboBox.GetItemText(comboBox.Items[e.Index]);
e.DrawBackground();
TextRenderer.DrawText(e.Graphics, txt, comboBox.Font, e.Bounds, e.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Left);
if (e.Index == 2 && !e.State.HasFlag(DrawItemState.ComboBoxEdit)) //Index of separator
e.Graphics.DrawLine(Pens.Red, e.Bounds.Left, e.Bounds.Bottom - 1,
e.Bounds.Right, e.Bounds.Bottom - 1);
}
代码e.State.HasFlag(DrawItemState.ComboBoxEdit)
的这一部分用于防止在控件的编辑部分中绘制分隔符。
注意强>
ComboBox
,您可以查看Brad Smith的 A ComboBox Control with Grouping。 (Alternate link。)