是否可以在组合框中进行自定义排序/显示顺序?假设我想要在所有其他人之前获得特殊值“Master Value”。
答案 0 :(得分:4)
以下代码可以解决问题。
创建要排序的项目的单独列表,然后使用AddRange。
comboBox1.Items.Add("Master");
List<String> listToSort = new List<String>();
listToSort.Add("6nd");
listToSort.Add("3nd");
listToSort.Add("5nd");
listToSort.Add("4nd");
listToSort.Add("2nd");
listToSort.Sort();
comboBox1.Items.AddRange(listToSort.ToArray<String>());
答案 1 :(得分:4)
创建一个实现IComparable并重写ToString的类,而不是添加字符串。
将该类的实例添加到您的ComboBox
答案 2 :(得分:1)
创建一个数据源作为视图(即存储过程),返回一个值为1的附加字段。
然后获取数据源,并在数据视图中添加一行,附加字段的值为0.
然后按照该字段对视图进行排序,然后按字段的描述进行排序。
这将始终将您的“主值”放在首位,然后按字母顺序对其他值进行排序。
private void PopulateCombo()
{
// get data view that returns 3 columns,
//master sort column set to 1, id, and description //
DataView view = GetSource();
// add a new row to the data source that has column values
// 0 for master sort column (all others are returned 1
// an appropriate ID and a description
// data view columns = master sort column, id, description
view.Table.Rows.Add(new object[] {0, 1, "MasterValue"});
// sort first by master column then description //
view.Sort = "MasterSortColumn ASC, Description ASC";
combo.DataSource = view;
combo.ValueMember = "Id";
combo.DisplayMember = "Description";
}