Каскадные поля со списком VB.net, подключенные к набору данных из Access — изменение единиц и десятичных дробей

У меня довольно сложный сценарий ComboBox, и, будучи новичком в программировании, я борюсь с тем, какой подход лучше всего использовать.

У меня есть DataSet с DataTable, который имеет несколько числовых столбцов данных. Числовые данные состоят из расстояний, указанных в стандартных единицах США. В настоящее время мои ComboBox настроены и работают, но мне нужно расширить то, что у меня есть в настоящее время, двумя способами.

  1. Мне нужно иметь возможность преобразовывать десятичные числа в моем столбце данных, отображаемом в дроби, есть ли способ сделать это и сохранить привязку данных? В этом случае это элемент отображения источника данных...

  2. Мне нужно иметь возможность отображать параметры раскрывающегося списка в разных наборах единиц... Я написал классы преобразования единиц, чтобы помочь позаботиться об этом, но я не знаю, могу ли я как-то это сделать и поддерживать привязку данных ? Я также хотел бы преобразовать единицы измерения в элементы отображения...

    Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As         System.EventArgs) Handles ComboBox1.SelectionChangeCommitted
     Select Case ComboBox1.SelectedItem
        Case "Tire1"
            With ComboBox2
                .DataSource = Tire1BindingSource
                .ValueMember = "OD"
                .DisplayMember = "OD"
            End With
        Case "Tire2"
            With ComboBox2
                .DataSource = Tire2BindingSource
                .ValueMember = "OD"
                .DisplayMember = "OD"
            End With
        Case "Tire3"
            With ComboBox2
                .DataSource = Tire3BindingSource
                .ValueMember = "OD"
                .DisplayMember = "OD"
            End With
        Case "HubCap"
            ComboBox3.DataSource = Nothing
            With ComboBox2
                .DataSource = HubcapBindingSource
                .ValueMember = "ID"
                .DisplayMember = "ID"
            End With
      End Select
    End Sub
    
    Private Sub ComboBox2_SelectedIndexChanged(sender As System.Object, e As      System.EventArgs) Handles ComboBox2.SelectionChangeCommitted
    Select Case ComboBox1.SelectedItem
        Case "Tire1"
            With ComboBox3
                .DataSource = Tire1BindingSource
                .ValueMember = "ID"
                .DisplayMember = "Weight"
            End With
        Case "Tire2"
            With ComboBox3
                .DataSource = Tire2BindingSource
                .ValueMember = "ID"
                .DisplayMember = "Weight"
            End With
        Case "Tire3"
            With ComboBox3
                .DataSource = Tire3BindingSource
                .ValueMember = "ID"
                .DisplayMember = "Weight"
            End With
        Case "HubCap"
            ComboBox3.DataSource = Nothing
            With ComboBox2
                .DataSource = HubCapBindingSource
                .ValueMember = "ID"
                .DisplayMember = "ID"
            End With
    End Select
    

Каков наилучший подход к использованию ComboBox при решении таких проблем, как отображение дробей и единиц...


person GetFuzzy    schedule 02.10.2011    source источник


Ответы (1)


Да, вы можете рисовать дробно, не затрагивая DataBindings. Вы должны установить свойство DrawMode и обрабатывать события DrawItem и MeasureItem. Для получения дополнительной информации прочитайте эту статья MSDN;

person kv-prajapati    schedule 02.10.2011
comment
Спасибо, я не видел этого раньше. Возможно, мне это пригодится в будущем, но я думаю, что попытаюсь уйти от требований рисовать дроби. - person GetFuzzy; 03.10.2011