簡體   English   中英

組合框項目值已切換

[英]ComboBox Items values are switched

我在Winform應用程序上有一個ComboBox,其中包含與date格式匹配的正則表達式列表。 我使用Dictionary加載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());

comboBox正確匹配不正確的比賽

這些值如何切換? 五項中的三項正確匹配。 其中兩個已切換。

在這里查看之后: https : //msdn.microsoft.com/en-us/library/system.windows.forms.combobox.sorted%28v=vs.110%29.aspx ,我發現如果將Sorted設置為true在設計時的數據綁定組合框上有此行為,而如果在運行時進行設置,則在設置數據綁定后會引發參數異常。 因此,不能將Sorted與數據綁定組合框一起使用。

如果要對值進行排序,則必須通過字典對它們進行排序。

或者,也許最好,如@Andy指出的那樣,使用SortedDictionary 我測試了一下,它當然起作用了。 謝謝@安迪。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM