Ошибка автозаполнения .NET ComboBox при косых чертах

Автозаполнение .NET ComboBox не будет полностью автозаполнено, так как отображаемый текст содержит косую черту. Он завершается только до косой черты, оставляя SelectedIndex == -1 и SelectedValue == null.

Это поведение глупо сохраняется независимо от того, установлен ли ваш источник автозаполнения на ListItems, а не на FileSystem или URL.

Есть ли какой-нибудь обходной путь для этого, который не включает в себя просто выбросить класс ComboBox и написать класс «MyComboBox»?


person Clyde    schedule 26.03.2009    source источник


Ответы (3)


Похоже, MS хорошо осведомлена об этом поведении. Я подозреваю, что вы видели заметку на их странице документации, если бы не ссылка на нее здесь.

person itsmatt    schedule 26.03.2009
comment
да, я видел записку. Но на этой странице я не нашел решения. - person Clyde; 26.03.2009
comment
Вы, наверное, тоже видели это «решение»: social.msdn.microsoft.com/Forums/en-US/winforms/thread/ - person itsmatt; 26.03.2009
comment
Удалось ли вам когда-нибудь решить эту проблему? Я знаю, что этот комментарий запоздал на десять лет, но, похоже, у них все еще нет исправления - person hal9000; 07.10.2020

@ hal9000 Я тоже искал исправление, нашел на сайте msdn фрагмент кода Пола Калла:

Private Sub cbCode_Validating(sender As Object, e As 
System.ComponentModel.CancelEventArgs) Handles cbCode.Validating
   
Dim s As String
   
If cbCode.SelectedIndex = -1 And cbCode.Text <> "" Then
' Let's see if it ends with a slash
 s = cbCode.Text
 If s.EndsWith("\") Or s.EndsWith("/") Then cbCode.SelectedIndex = cbCode.FindString(s)
End If

End Sub
person richardvg    schedule 13.10.2020

Самое простое решение, которое я смог найти, - это загрузить бесплатный пакет элементов управления winforms от сообщества syncfusion с syncfusion.com и использовать их sfCombobox . Автозаполнение у них работает правильно. Microsoft действительно должна исправить эту проблему, хотя это довольно неприятно.

person PWCoder    schedule 30.03.2021