我在Winform应用程序上有一个ComboBox,其中包含一个匹配date
格式的正则表达式列表。我使用字典加载ComboBox,因此我可以显示匹配模式的示例,并将实际正则表达式设为SelectedValue
。
Dictionary<string, string> datePatternsSource = new Dictionary<string, string>();
datePatternsSource.Add(@"dd-MMM-yy (05-SEP-15)", @"((\d{2})(\-)(\w{3})(\-)(\d{2}))");
datePatternsSource.Add(@"yyyy-MM-dd (2015-09-05)", @"((\d{4})(\-)(\d{2})(\-)(\d{2}))");
datePatternsSource.Add(@"MM/dd/yyyy (09/05/2015)", @"((\d{2})(\/)(\d{2})(\/)(\d{4}))");
datePatternsSource.Add(@"M/d/yyyy (9/5/2015)", @"((\d{1,2})(\/)(\d{1,2})(\/)(\d{4}))");
datePatternsSource.Add(@"yyyy/MM/dd (2015/09/05)", @"((\d{4})(\/)(\d{2})(\/)(\d{2}))");
cboDatePatterns.DisplayMember = "Key";
cboDatePatterns.ValueMember = "Value";
cboDatePatterns.DataSource = new BindingSource(datePatternsSource, null);
问题是两个正则表达式与正确的示例不匹配。为了演示我调用MessageBox.Show()方法来显示组合框属性。
MessageBox.Show("SelectedItem = " + cboDatePatterns.SelectedItem.ToString() + "\nSelectedValue = " + cboDatePatterns.SelectedValue.ToString());
如何切换这些值?五个项目中的三个正确匹配。其中两个已切换。
答案 0 :(得分:2)
查看此处:https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.sorted%28v=vs.110%29.aspx后,我发现如果在设计时将数据绑定组合框中的Sorted
设置为true
,则会出现此行为,而如果您在运行时设置它,设置数据绑定后,引发参数异常。因此,Sorted不能与数据绑定组合框一起使用...
如果要对值进行排序,则必须通过“词典”对其进行排序。
或者,或许最好,就像@Andy指出的那样,使用SortedDictionary。 当然,我测试了它并且它起作用了。谢谢@Andy。 :)