Ich habe eine benutzerdefinierte CheckListBox so konnte ich jedoch die Vordergrundfarbe bestimmter Elemente ändern, wenn ich die MutiColumn auf true ermöglichen die Werte einander überlappen, anstatt in mehreren Spalten arbeiten ..Benutzerdefinierte CheckListBox Honor 2 Spalten
public sealed class CustomCheckedListBox : CheckedListBox
{
public CustomCheckedListBox()
{
DoubleBuffered = true;
}
protected override void OnDrawItem(DrawItemEventArgs e)
{
Size checkSize = CheckBoxRenderer.GetGlyphSize(e.Graphics,
System.Windows.Forms.VisualStyles.CheckBoxState.MixedNormal);
int dx = (e.Bounds.Height - checkSize.Width)/2;
e.DrawBackground();
bool isChecked = GetItemChecked(e.Index); //For some reason e.State doesn't work so we have to do this instead.
CheckBoxRenderer.DrawCheckBox(e.Graphics, new Point(dx, e.Bounds.Top + dx),
isChecked
? System.Windows.Forms.VisualStyles.CheckBoxState.CheckedNormal
: System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedNormal);
using (StringFormat sf = new StringFormat {LineAlignment = StringAlignment.Center})
{
using (Brush brush = new SolidBrush(isChecked ? CheckedItemColor : BackColor))
{
e.Graphics.DrawString(Items[e.Index].ToString(), Font, brush,
new Rectangle(e.Bounds.Height, e.Bounds.Top, e.Bounds.Width - e.Bounds.Height, e.Bounds.Height), sf);
}
}
}
private Color _checkedItemColor = Color.Blue;
public Color CheckedItemColor
{
get { return _checkedItemColor; }
set
{
_checkedItemColor = value;
Invalidate();
}
}
}
Kann jemand Änderungen vorschlagen, die vorgenommen werden müssen, damit dies nicht passiert?
Haben Sie versucht, das DrawSubItem zu codieren? Ebenfalls. Ein Bild des falschen Ergebnisses hilft normalerweise .. – TaW
Vielen Dank, ich werde einen Blick .. – Nim
Überprüfen Sie auch die Eigenschaft: 'ListView.Item.UseItemStyleForSubItems' - Sie müssen möglicherweise auf false setzen .. – TaW