2010-07-05 49 views
1

當使用AutoCompleteMode和模式Suggest並且AutoCompleteSource是ListItems時,Combobox中的C#中存在排序錯誤。如何在AutoCompleteMode建議時解決C#在組合框中的排序錯誤?

例子: 組合框包含項目: 「斯維德伯格」, 「瑞典銀行」, 「瑞典」

當組合框鍵入「SW」我應該得到兩個項目建議,「瑞典銀行」和「瑞典」 。 問題是隻顯示「Swedbank」。 看來,C#排序的項目,如: 「瑞典銀行」, 「斯維德伯格」, 「瑞典」

如果我能C#使用StringComparer.Ordinal它可以解決這個問題,因爲序排序似乎更好地工作。

關於如何解決這個問題的任何想法?

 
System.Windows.Forms.ComboBox comboBox1; 
this.comboBox1 = new System.Windows.Forms.ComboBox(); 
this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; 
this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; 
this.comboBox1.FormattingEnabled = true; 
this.comboBox1.Items.AddRange(new object[] { 
     "Svedberg", 
     "Swedbank", 
     "Swedish"}); 
this.comboBox1.Location = new System.Drawing.Point(142, 474); 
this.comboBox1.Name = "comboBox1"; 
this.comboBox1.Size = new System.Drawing.Size(121, 21); 
this.Controls.Add(this.comboBox1); 

回答

0

此代碼的工作對我來說:

 System.Windows.Forms.ComboBox comboBox1; 
     comboBox1 = new System.Windows.Forms.ComboBox(); 
     comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; 
     comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; 
     comboBox1.FormattingEnabled = true; 
     comboBox1.Items.AddRange(new object[] { 
    "Svedberg", 
    "Swedbank", 
    "Swedish"}); 
     comboBox1.Location = new System.Drawing.Point(0, 0); 
     comboBox1.Name = "comboBox1"; 
     comboBox1.Size = new System.Drawing.Size(121, 21); 
     Controls.Add(comboBox1); 

我做的唯一的事情是消除了此引用。

Regards, M.

+0

使用否是無關緊要的。問題可能在文化設置中。 – RvdK 2010-07-05 12:37:16

+0

正確,但代碼無法編譯。我不承認文化特定的標記。沒有哪個文化會處理與SWEDbank不同的SWEDish。 – 2010-07-05 13:21:10