在C#中,ListBox控件本身不支持直接進行分組顯示。但你可以通過一些方法來實現分組顯示的效果。以下是一個簡單的實現方法:
public class GroupedListBoxItem
{
public string GroupName { get; set; }
public List<object> Items { get; set; }
public GroupedListBoxItem(string groupName)
{
GroupName = groupName;
Items = new List<object>();
}
}
List<GroupedListBoxItem> items = new List<GroupedListBoxItem>();
items.Add(new GroupedListBoxItem("分組1"));
items.Add(new GroupedListBoxItem("分組2"));
items[0].Items.Add("子項1");
items[0].Items.Add("子項2");
items[1].Items.Add("子項3");
items[1].Items.Add("子項4");
public class GroupedListBox : ListBox
{
protected override void OnDrawItem(DrawListViewItemEventArgs e)
{
if (e.Item.ItemType == ItemType.Header)
{
e.DrawDefault = true;
e.DrawBackground();
e.DrawText();
}
else
{
base.OnDrawItem(e);
}
}
}
GroupedListBox listBox = new GroupedListBox();
listBox.DataSource = items;
listBox.DrawMode = DrawMode.OwnerDrawFixed;
listBox.DrawItem += ListBox_DrawItem;
ListBox_DrawItem
事件,以便在分組項前添加分隔線。private void ListBox_DrawItem(object sender, DrawListViewItemEventArgs e)
{
if (e.Item.ItemType == ItemType.Header)
{
e.DrawBackground();
e.DrawText();
e.DrawLine();
}
else
{
base.OnDrawItem(e);
}
}
現在,你的ListBox控件應該能夠以分組的方式顯示數據了。你可以根據需要調整分組項的樣式和分隔線的樣式。