Страница: 1 |
Страница: 1 |
Вопрос: И снова ComboBox
Добавлено: 19.07.06 11:32
Автор вопроса: seva | Web-сайт:
Здравствуйте, уважаемые!
Вопрос достаточно прост, но четкого ответа не могу найти ни в литературе, ни в сети.
Нужно каждому элементу выпадающего списка присвоить определенное значение, чтобы в зависимости от выбранного элемента вычисления производились с тем или иным коэффициентом. Это обязательно делать через DataSource?
Заранее спасибо всем
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 19.07.06 13:15
Да, обязательно..
Но DataSource не означает, что в качестве источника данных обязана быть таблица БД или еще что-то.. В качестве источника может послужить также любой наследник IList или Array
Номер ответа: 2
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #2
Добавлено: 19.07.06 20:50
Под System.Windows.Forms ListBox.DataSource может принимать IList или IListSource!
Под System.Web ListBox.DataSource может принимать любой IEnumerable
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 19.07.06 20:53
И через DataSource это делать совсем не обязательно!!!
Можно просто добавлять элементы, причем совершенно любые объекты, начиная с String и заканчивая HttpWebRequest.
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 19.07.06 21:19
Да что ты!??? Ну ка продемонстрируй, как ты заюзаешь ValueMember без DataSource!!! я с удовольствием поучусь........
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 19.07.06 21:25
seva, как вариант...
можешь сделать следущее:
Если не хочешь возится с DataSource, то попробуй создать массив с твоими коэффициентами, и в событии SelectedIndexChanged получай индекс элемента в ComboBox и по этому же индексу выдергивай значение из своего массива.. Только тут важно,чтобы они были синхронизированы..
Номер ответа: 6
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 19.07.06 22:50
А причем тут вообще ValueMember и DataSource?
Я ж говорю, я могу положить в ListBox что угодно, любой объект и работать с ним!
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With ListBox1.Items
.Add(New MyItem("Один", 1))
.Add(New MyItem("Весемь", 8))
.Add(New MyItem("Десять", 10))
.Add(New MyItem("Пятнадцать", 15))
.Add(New MyItem("Двадцать один", 21))
End With
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Me.Text = CType(ListBox1.SelectedItem, MyItem).Value.ToString
End Sub
Class MyItem
Public Title As String
Public Value As Integer
Public Sub New()
End Sub
Public Sub New(ByVal Title As String, ByVal Value As String)
Me.Title = Title
Me.Value = Value
End Sub
Public Overrides Function ToString() As String
Return Title
End Function
End Class
End Class
Номер ответа: 7
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #7
Добавлено: 20.07.06 00:20
C классами понятно... тут вопросов нет.. Но по ходу (если я верно понял автора) у него элементы списка ни что иное как обычные строки.. И он к каждому элементу хочет прицепить еще по 1 значению... и для этих целей как нельзя лучше подойдет SelectedValue & ValueMember