2015-12-25 3 views
0

Как сбросить ComboBox по умолчанию Text i, установленный в свойствах. Скажем, у меня есть ComboBox с текстом по умолчанию «руб. y», который, когда SelectedIndexChanged печатается в TextBox, после этого не перегружает текст по умолчанию «Ruby», но SelectedItem. Я хочу, чтобы он читал «Ruby» после или все время, если это невозможно. СпасибоVBNET: Как сбросить ComboBox после выбора

ответ

0
  1. Объявите переменный вспомогательный класс в классе формы:
    Dim _originalComboText As String
  2. На открытии формы, помните, по умолчанию текстого управления в некоторых хелперах переменный. Например, добавьте следующую строку в конструктор (Sub New()):
    _originalComboText = ComboBox1.Text
  3. Каждый раз, после того, как выбор сделан, восстановить текст из него:
    ComboBox1.Text = _originalComboText

Если вы проверить содержание .designer.vb файл, принадлежащий вашей форме, вы можете увидеть инициализацию текста своего элемента управления через задание (=) - так что не делает здесь никакой особой магии. Если вы хотите сохранить текст, вам нужно сохранить его где-нибудь, прежде чем он потеряется.

Вот полный минимальный пример:

Public Class Form1 

    Dim _originalComboText As String 

    Sub New() 

     ' This call is required by the designer. 
     InitializeComponent() 

     ' Add any initialization after the InitializeComponent() call. 
     _originalComboText = ComboBox1.Text 

    End Sub 

    Private Sub ComboBox1_Leave(sender As Object, e As EventArgs) Handles ComboBox1.Leave 
     ComboBox1.Text = _originalComboText 
    End Sub 

    Private Sub ComboBox1_LocationChanged(sender As Object, e As EventArgs) Handles ComboBox1.LocationChanged 
     ComboBox1.Text = _originalComboText 
    End Sub 

End Class 

И если ваши два обработчика не отличаются, а затем заменить их только с одним - с двумя событиями в пункте Handles:

Private Sub ComboBox1_RestoreText(sender As Object, e As EventArgs) _ 
      Handles ComboBox1.Leave, ComboBox1.LocationChanged 

     ComboBox1.Text = _originalComboText 

    End Sub 
+0

Спасибо, но я обнаружил решение после игры с объявлениями. –

+0

Прошу прощения, но ваш ответ не работает. Моя делает, хотя –

+0

Прошу прощения, что слышу это. Но «Не работает» очень расплывчато, поэтому я не могу вам помочь. Может быть, вы можете быть более конкретным. На моей стороне код работает безупречно. – miroxlav

0

Используйте это:

Private Sub ComboBox1_Leave(sender As Object, e As EventArgs) Handles ComboBox1.Leave 
    ComboBox1.Text = "Ruby" 
End Sub 
Private Sub ComboBox1_LocationChanged(sender As Object, e As EventArgs) Handles ComboBox1.LocationChanged 
    ComboBox1.Text = "Ruby" 
End Sub 

С пользователь выберет, скажем print <<"EOF"; ---mytext---EOF из выпадающего списка, и это будет автоматически печататься в текстовом поле. Он или она должен пойти в текстовое поле или в другое место.

Я знаю, что это не совестно, чтобы отвечать на собственный вопрос, но если кому-то нужна помощь. Здесь

+0

Это решение имеет одну небольшую проблему. У вас есть значение 'Ruby' на 2 независимых местах. Если вы хотите получить чистый код, сохраните текст только один раз - либо в форме Designer, либо в самом коде. В своем ответе я показал вам, как иметь «Ruby» только в дизайнере форм. – miroxlav

+0

Я получил значение 'Ruby' в дизайнере форм. Это я сказал в своем вопросе: «Как сбросить ComboBox по умолчанию ** Text ** i установлен в ** свойствах **.« Ruby »- это не выпадающий элемент, но он должен показать пользователю выпадающее меню дать ему рубиновый синтаксис. –

+0

У вас есть строка '' Ruby'' три раза.Просто реализуйте мой ответ, чтобы узнать, как его получить только один раз. Повторение одного и того же литерала по коду - это плохая привычка, которую следует избегать, потому что это приводит к ошибкам: например, вы обнаруживаете и обновляете только 2 из 3 вхождений «Ruby» - и вы вводите ошибку. Научитесь делать это правильно: не повторяйте себя. – miroxlav

Смежные вопросы