Как установить Combox со значением по умолчанию, если для Drop Down Style установлено «Dropdownlist» - PullRequest
0 голосов
/ 04 февраля 2020

Я использую Visual Studio 2019, и я пытался заставить мое поле со списком установить значение по умолчанию, используя запись из базы данных. У меня для выпадающего стиля установлено значение «Выпадающий список», и это код, который я использую.

Сначала я загружаю список из таблицы данных состояния в поле со списком

Private Sub frmABS3_Shown(sender As Object, e As EventArgs) Handles Me.Shown
        modABS.clsABS.ExecQuery("SELECT * FROM tblABSStates")
        If Not String.IsNullOrEmpty(modABS.clsABS.Exception) Then MsgBox(modABS.clsABS.Exception) : Exit Sub

        For Each r As DataRow In modABS.clsABS.DBDT.Rows
            cboState.Items.Add(r("StateAbbrev"))
        Next
End Sub

Далее я заполняю поля в форме. У меня возникли проблемы.

Private Sub GetRecord()
        ' Fail if No Records Found or position is out of Range
        If modABS.clsABS.DBDT.Rows.Count < 1 OrElse CurrentRecord > modABS.clsABS.DBDT.Rows.Count - 1 Then Exit Sub

        'Return first user found
        Dim r As DataRow = modABS.clsABS.DBDT.Rows(CurrentRecord)

        'Populate Fields
        cboState.Text = r("StateAbbrev").ToString
        txtCity.Text = r("City").ToString
End Sub

Когда я запускаю код, в поле со списком не отображается сокращение состояния, и элемент не выбирается в списке. Он работает так, как и предполагалось, когда я сбрасываю стиль выпадающего меню, установленный на «Drop Down», однако я не хочу, чтобы пользователь мог добавлять значение, которого нет в комбинированном списке.

1 Ответ

0 голосов
/ 04 февраля 2020

Этот код должен быть в событии загрузки формы, а не в отображаемом событии формы:

Private Sub frmABS3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    modABS.clsABS.ExecQuery("SELECT * FROM tblABSStates")
    If Not String.IsNullOrEmpty(modABS.clsABS.Exception) Then MsgBox(modABS.clsABS.Exception) : Exit Sub

    For Each r As DataRow In modABS.clsABS.DBDT.Rows
        cboState.Items.Add(r("StateAbbrev"))
    Next
    txtZipCode.Text = modABS.clsABS.ZipCode
End Sub
...