Каскадные комбинированные списки VB.net, подключенные к DataSet из Access - смена единиц измерения и десятичных дробей на дробные - PullRequest
0 голосов
/ 02 октября 2011

У меня довольно сложный сценарий 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
    

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

1 Ответ

0 голосов
/ 02 октября 2011

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

...