5

ここで質問を更新します..電話番号のないコンボボックスを使用しています。変数で電話を1つずつ取得したいです。現在、以下のコードを使用してコンボボックスの値を取得しています。しかし、それでも次のエラーメッセージSystem.Data.DataRowViewが表示されます。このエラーを修正するのを手伝ってください。vb.netの新機能です。

私の部分的なコードはここにあります..

        For i = 0 To ComboBox1.Items.Count
            Dim s As String

            s = Convert.ToString(ComboBox1.Items(i))
        Next i
4

6 に答える 6

4

ゼロベースのインデックスを使用しています。

これを変える:

For i = 0 To ComboBox1.Items.Count

これに:

For i = 0 To ComboBox1.Items.Count - 1
于 2015-12-30T10:31:43.707 に答える
2

これも機能します!

        Dim stgTest = "Some Text"
        Dim blnItemMatched As Boolean = False

        '-- Loop through combobox list to see if the text matches
        Dim i As Integer = 0
        For i = 0 To Me.Items.Count - 1
            If Me.GetItemText(Me.Items(i)) = stgTest Then
                blnItemMatched = True
                Exit For
            End If
        Next i

        If blnItemMatched = False Then

            Dim stgPrompt As String = "You entered  '" & stgTypedValue & "',  which is not in the list."
            MessageBox.Show(stgPrompt, "Incorrect Entry", MessageBoxButtons.OK, MessageBoxIcon.Information)

            Me.Text = ""
            Me.Focus()

        End If
于 2015-06-05T20:03:58.987 に答える
2

あなたの問題はおそらくここで起こります:

s = Convert.ToString(ComboBox1.Items(i))

これは値を返しません。指定されたインデックスでオブジェクトの文字列表現を返します。この場合、明らかに typeSystem.Data.DataRowViewです。

ComboBox1.Items(i)適切な型にキャストして、そのValue. または、その aDataRowViewであるため、適切な列名を介して値にアクセスできます。

Dim row = CType(ComboBox1.Items(i), System.Data.DataRowView)
s = row.Item("column_name")

それにもかかわらず、トランザクションが失敗するか成功するかに関係なく、まず接続を確実に閉じて破棄する必要があります。これは、finallyブロック (オプション 1) またはusingステートメント (オプション 2) で実行できます。

オプション1

// ...
con1 = New MySqlConnection(str)
con1.Open()
Try
    // ...
Catch ex As Exception
    Lblmsg.Text = " Error in data insertion process....." + ex.Message
Finally
    con1.Close()
    con1.Dispose()
End Try

オプション 2

// ...
Using con1 as New MySqlConnection(str)
    con1.Open()
    Try
        // ...
    Catch ex As Exception
        Lblmsg.Text = " Error in data insertion process....." + ex.Message
    Finally
        con1.Close()
    End Try
End using
于 2012-06-12T10:05:18.910 に答える
1

この回答全体をオンラインで見つけることはできませんでしたが、つなぎ合わせました。cbox の下のスニペットには、DisplayMember プロパティと ValueMember プロパティが初期化された ComboBox コントロールがあります。

    Dim itemIE As IEnumerator = cbox.Items.GetEnumerator
    itemIE.Reset()
    Dim thisItem As DataRowView
    While itemIE.MoveNext()
        thisItem = CType(itemIE.Current(), DataRowView)
        Dim valueMember As Object = thisItem.Row.ItemArray(0)
        Dim displayMember As Object = thisItem.Row.ItemArray(1)
        ' Insert code to process this element of the collection. 
    End While
于 2013-10-05T02:17:28.033 に答える