有没有办法在视觉上划分组合框中的项目?

时间:2012-04-26 14:41:41

标签: c# winforms

我在考虑群体之间的某种界限。有没有办法将项目分成几组?着色它们是一种选择,但它看起来会很糟糕。

3 个答案:

答案 0 :(得分:2)

拥有者绘制自己的东西很简单。导出组合,设置DrawMode = OwnerDrawFixed并渲染项目:

protected override void OnDrawItem(DrawItemEventArgs e)
{
    e.DrawBackground();
    if( e.State == DrawItemState.Focus )
        e.DrawFocusRectangle();
    var item = this.Items[e.Index];
    using(var brush = new SolidBrush(e.ForeColor))
    {
        e.Graphics.DrawString(item.ToString(), e.Font, brush, e.Bounds);
    }
    e.Graphics.DrawLine(SystemPens.ControlText, e.Bounds.X, e.Bounds.Y, e.Bounds.Right, e.Bounds.Y);

    base.OnDrawItem(e);
}

答案 1 :(得分:0)

我认为你可以覆盖元素的可视化,但这是一个复杂的解决方案。或者,您可以手动插入线条(空心项目),然后处理选择,如果选择它们则还原。

我认为没有任何默认解决方案。

答案 2 :(得分:0)

您可以在分组框中插入分隔符项。您可以使用显示空字符串,短划线等的项目。不幸的是,使用WinForms时通常不容易。如果你使用WPF,你可以更优雅地做到这一点。