Как сделать, чтобы выбрав в ComboBox, например, "выбор 1" переменной А присваивалось
выбор 1
выбор 2
выбор 3
Как сделать, чтобы выбрав в ComboBox, например, "выбор 1" переменной А присваивалось значение 1.
Это надо делать так:
или есть более грамотный способ?
Visual Basic 2008
Спасибо!
Присваивание значения переменной в данном случае происходит так:
'Используется следующая событийная процедура
Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
a = ComboBox1.SelectedIndex
End Sub
Таким образом мы получаем индекс любого элемента даже не зная его текстового значения и не используя оператор условного перехода. А главное изменяем значение переменной сразу после изменения значения в ComboBox`е.
Да не очень
Присваивание значения переменной в данном случае происходит так:
'Используется следующая событийная процедура
Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
a = ComboBox1.SelectedIndex
End Sub
Таким образом мы получаем индекс любого элемента даже не зная его текстового значения и не используя оператор условного перехода. А главное изменяем значение переменной сразу после изменения значения в ComboBox`е.[/QUOTE]
По моему автор не просил привязки к индексу, а лишь к тексту. ПОэтому вернее будет что-то вроде:
case 'Выбор1'
a = 1
case '100500'
a = 2
...
end select
Можно еще извернуться следующим способом:
1. Сделать в комбобоксе два столбца
2. Размеры столбцов поставить - что то вроде 0; 100 чтобы первый не было видно.
3. При инициализации данных в комбобоксе предусмотреть, чтобы в первом столбце были значения, которые будет принимать переменная, а во втором строки типа "выбор Х".
4. В событии прописать:
Вроде так, хотя это ВБАшный вариант, не факт что прокатит в ВС2008. :)
более того, чтобы с этим вопросом разобраться и форум не нужен.
Позже. Хм. было замечально, если бы автор рассказал поподробнее, как он будет использовать переменную сию.
Ну он же написал, если выбрали первую строку, т.е. "выбор 1", то надо сохранить 1 .... ты прав в одном, ему не текст нужен, а именно порядковый номер выбора (я не обратила на это внимание, зато заметила, сколько тупых тем уже наплодил...), т.е. индекс. конечно, если речь что сохранение значение от содержания строки и нет гарантии отсортировки, то ты прав, но не думаю, что все так страшно )
одно не понимаю, почему то что выше это изврат, а твой кейс с его иф'ом лучше? имхо, это и есть изврат так код писать, в таких случаях.
2 ХК: вряд ли чувак .НЕТ пользует.
Как сделать, чтобы выбрав в ComboBox, например, "выбор 1" переменной А присваивалось значение 1.
Это надо делать так:
[COLOR=Red] Visual Basic 2008[/COLOR]
Спасибо!
2 ХК: вряд ли чувак .НЕТ пользует.
[COLOR=Red]Как бы[/COLOR] намекает нам на .NET 3.5....
ааа, ну наверное да. просто я ж не знаю, есть там чистый вб али нету. :)
тады ж чувак не там тему создал, а? ;)
выбор 1 - 5125
выбор 2 - 985
выбор 3 - 15
Как сделать так, чтобы при выборе "выбор 2", переменная а была равна 985, при выборе "выбор 3" - 15 итд.
выбор 1 - 5125
выбор 2 - 985
выбор 3 - 15
Как сделать так, чтобы при выборе "выбор 2", переменная а была равна 985, при выборе "выбор 3" - 15 итд.
На форме один единственный ComboBox1.
Свойства DisplayMember = "Name", ValueMember = "Value".
Код формы:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim options() As OptionItem = { _
New OptionItem("Option 1", 10), _
New OptionItem("Option 2", 20), _
New OptionItem("Option 3", 30)}
ComboBox1.DataSource = options
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Text = ComboBox1.SelectedValue.ToString()
End Sub
End Class
Public Class OptionItem
Sub New(ByVal name As String, ByVal value As Integer)
_name = name
_value = value
End Sub
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Private _value As Integer
Public Property Value() As Integer
Get
Return _value
End Get
Set(ByVal value As Integer)
_value = value
End Set
End Property
End Class
Без обработки события, только код формы:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim options() As OptionItem = { _
New OptionItem("Option 1", 10), _
New OptionItem("Option 2", 20), _
New OptionItem("Option 3", 30)}
ComboBox1.DataSource = options
Me.DataBindings.Add(New Binding("OptionValue", ComboBox1, "SelectedValue"))
End Sub
Private _optionValue As Integer
Property OptionValue() As Integer
Get
Return _optionValue
End Get
Set(ByVal value As Integer)
_optionValue = value
Text = value.ToString() REM для отображения изменения
End Set
End Property
End Class
как бы не мешало бы.
Я думаю что еще одно подобное сообщение - и тем вам на форуме вообще не получится создавать.
конечно, шлите, как говорят *бумага все выдержит* :D
а темы ваши тупые, т.к. достаточно открыть мануалы и самому почитать, а затем только можно идти на форум и интересоваться разве что тем, не как сделать, а можно ли сделать лучше.