是否有可能在combox中有自定义排序/显示顺序?假设我在所有其他人之前想要一个特殊值“MasterValue”。C#自定义组合框排序
4
A
回答
4
而是添加字符串,创建一个实现了IComparable接口和覆盖的ToString类。
添加该类的实例,以您的组合框
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>());
+0
second,thirdon,fourton? – Lars 2013-11-21 13:24:17
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";
}
相关问题
- 1. 自定义组合框,组合框
- 2. 自定义组合框
- 3. 自定义组合框
- 4. 自定义数组排序
- 5. 自定义排序元组
- 6. 自定义排序数组
- 7. 数据绑定排序的组合框
- 8. 自定义排序主干集合
- 9. 集合的自定义排序
- 10. 自定义排序的Magento集合?
- 11. 在C++自定义类中自我排序数组的排序函数
- 12. 自定义列表框排序
- 13. 使用自定义组合框UI
- 14. 设置自定义值,组合框
- 15. 一个自定义组合框样式
- 16. jquery自定义选择/组合框
- 17. winforms的自定义组合框控件
- 18. SearchBox的自定义组合框
- 19. Flash Builder - 自定义组合框
- 20. PyGTK的自定义组合框行为
- 21. 带组合框的自定义控件
- 22. 的TableView自定义类型组合框
- 23. 组合框自定义显示
- 24. 自定义组合框抛出ArgumentOutOfRangeException
- 25. 弯曲组合框自定义问题
- 26. Flex中的自定义组合框
- 27. DataGridView的自定义组合框列
- 28. WPF组合框自定义滚动条
- 29. WPF自定义组合框控件
- 30. 在WPF中自定义组合框
好了,但我仍然想要“MasterValue”作为显示值,并根据除了应位于顶部的“MasterValue”之外的所有对象的ToString()值进行排序。你的答案是否有诀窍? – Toto 2009-09-04 11:00:28
@Duaner:这个想法是,comboBox对调用IComparable接口的CompareTo函数的元素进行排序。你必须做的是围绕String类创建一个包装器。 ToString返回你想要在组合框中的字符串,并且CompareTo确保你有想要的订单。如果字符串是“MasterValue”,那么CompareTo总是返回一个<0,所以“MasterValue”总是第一个。 – 2009-09-04 11:09:35
这在.NET 3.5中对我无效。 System.Windows.Forms.ComboBox有其内部的ItemComparer类,它实际上调用GetItemText()属性,它调用ToString()而不是IComparable接口。 – 2010-08-27 02:07:02