2010-07-05 43 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