我有兩個參數列表,您可以在兩個列表中移動它們(包含或不包含),我想自定義參數的順序以簡化選擇。列表框有可能性按類別和A-Z
我目前使用的與多選一ListBox
,但我想它通過category
,A-Z
或自定義排序像propertyGrid
有一組由功能組。
有沒有可以做所有這些的組件?我需要在該組件上設置哪些設置?
我有兩個參數列表,您可以在兩個列表中移動它們(包含或不包含),我想自定義參數的順序以簡化選擇。列表框有可能性按類別和A-Z
我目前使用的與多選一ListBox
,但我想它通過category
,A-Z
或自定義排序像propertyGrid
有一組由功能組。
有沒有可以做所有這些的組件?我需要在該組件上設置哪些設置?
我會用一個ListView
,它支持像在Windows資源管理器視圖中一樣的組。
檢查這一項:How to: Group Items in a Windows Forms ListView Control
因此,在短期,首先創建一個組:
// Adds a new group that has a left-aligned header
listView1.Groups.Add(new ListViewGroup("List item text",
HorizontalAlignment.Left));
然後將項目添加到組,例如這裏的項目0被添加到組:
// Adds the first item to the first group
listView1.Items[0].Group = listView1.Groups[0];
如果您決定使用ListView - 這是一個使用基於列的排序的解決方案。我在繼承ListView的組件中使用它。
private ListViewItemComparer LviComparer = new ListViewItemComparer(); // Comparer Class
// Override OnColumn Click
protected override void OnColumnClick(ColumnClickEventArgs e)
{
if (e.Column == LviComparer.SortColumn)
{
if (LviComparer.Order == SortOrder.Ascending)
{
LviComparer.Order = SortOrder.Descending;
}
else
{
LviComparer.Order = SortOrder.Ascending;
}
}
else
{
LviComparer.SortColumn = e.Column;
LviComparer.Order = SortOrder.Ascending;
}
this.Sort();
base.OnColumnClick(e);
}
//比較
類public class ListViewItemComparer : IComparer {
public int SortColumn { get ; private set ; }
public SortOrder Order { get ; private set ; }
private CaseInsensitiveComparer objectCompare = new CaseInsensitiveComparer();
public int Compare(object x, object y)
{
int compResult = 0;
ListViewItem lviX, lviY;
lviX = (ListViewItem)x;
lviY = (ListViewItem)y;
compResult = CompareString(lviX, lviY);
if (Order == SortOrder.Ascending)
{
return compResult;
}
else if (Order == SortOrder.Descending)
{
return (-compResult);
}
else
{
return 0;
}
}
private int CompareString(ListViewItem lviX, ListViewItem lviY)
{
try
{
int compareResult = objectCompare.Compare(lviX.SubItems[SortColumn].Text, lviY.SubItems[SortColumn].Text);
return compareResult;
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine(ex.Message);
return 0;
}
} }
你如何上下滾動,而不是左,右? –
設置爲「查看」詳細信息並添加一列。啓用和禁用'ShowGroups'以在兩種模式之間切換。 –