0

始める前に、不明な点がある場合はお詫び申し上げますが、最善を尽くします。私はvbnetを使用して、リストボックス(およびテキストボックス)とcaseステートメントを使用するプログラムを作成しています。後でユーザー入力をアクセスデータベースに送信できるようにするクラスを作成しようとしています。私が抱えている問題は、データベースに送信されるcaseステートメントを含む変数値を取得できないことです。

これがコードです、そしておそらく誰かが私が問題を解決するのを手伝ってくれるでしょう:

これは私がユーザー入力を受け入れるフォームにあるものです(テキストボックスも含まれていますが、私はそれらを理解しています):

Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Fill Listbox with items
    Me.Controls.Add(ListBox1)
    ListBox1.Items.Add("Shoot in-laws")
    ListBox1.Items.Add("Become a paparazzi")
    ListBox1.Items.Add("Drive 5 mph over speed limit")
    ListBox1.Items.Add("Treat for rabies once a week")
    ListBox1.Items.Add("Cheat on income taxes")
    ListBox1.Items.Add("Breathe uder water")
    ListBox1.Items.Add("Recite the Gettysburg Address")
    ListBox1.Items.Add("Smile while being staked")
    ListBox1.Items.Add("Stay calm while getting help on C#")
    ListBox1.Items.Add("Day dream about playing chess")
    ListBox1.Items.Add("Take candy from a baby")

End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

    Select Case ListBox1.SelectedIndex
        Case 0
            dblTestScore = 50
        Case 1
            dblTestScore = 15
        Case 2
            dblTestScore = 25
        Case 3
            dblTestScore = 55
        Case 4
            dblTestScore = 10
        Case 5
            dblTestScore = 20
        Case 6
            dblTestScore = 40
        Case 7
            dblTestScore = 65
        Case 8
            dblTestScore = 30
        Case 9
            dblTestScore = 35
        Case 10
            dblTestScore = 45
    End Select

End Sub

これで、次のコードがクラスに含まれます。

Public Class ClsWriteRecord
Public Sub addNewRecordMore(ByVal listTestScore As ListBox, ByVal listTEST As ListBox, 

'declare variables
Dim dblTestScore As Double
Dim strTEST As String

'Get values

strTEST = listTEST.GetItemText(listTEST.SelectedItem)
dblTestScore = listTEST.GetItemText(listTEST.SelectedIndex)

End Sub
End Class

strTESTは正しく機能し、リストボックスアイテムを取得してデータベースに送信します(例:「Shootin-laws」)が、dblTestScoreは機能しません。代わりに、たとえば50、15、25などの値は、ケース番号である0、1、2を送信します。

誰かが私がそれを理解するのを手伝ってもらえますか?インターネットを検索しましたが、答えが見つかりませんでした。前もって感謝します。

4

1 に答える 1

0

これはうまく機能します...以下を参照してください...これは、メインフォームまたは必要な場所から呼び出したいクラスです...

Public Class ClsWriteRecord

 Public Shared Function addNewRecordMore(ByVal listTestScore As Integer, ByVal listTEST As String)

    'Do your save routine here... and pass your information to it...'
    'Example...' Save(listTestScore, listTEST)
    'You would have to create the save function of course...'

 End Function

End Class

次に、ここにあなたのメインフォームまたはあなたが持っている他のフォームがあります...

 Public Class Form1

'Our global variables...'
Private dblTestScore As Integer = 0
Private strTest As String = String.Empty

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    'Put your items into an array then add this to the listbox...'
    Dim strItems As String() = {"Shoot in-laws", "Become a paparazzi", "Drive 5 mph over speed limit", "Treat for rabies once a week"} 'Add more as needed...'
    'Add your items...'
    ListBox1.Items.AddRange(strItems)

End Sub

Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

    'Set your variable for your text here...'
    strTest = ListBox1.SelectedItem

    'Build your case statement...'
    Select Case ListBox1.SelectedItem

        Case "Shoot in-laws"
            dblTestScore = 50
        Case "Become a paparazzi"
            dblTestScore = 15
        Case "Drive 5 mph over speed limit"
            dblTestScore = 25
        Case "Treat for rabies once a week"
            dblTestScore = 55
            'Continue your case on down here...'
    End Select

    'Call our function from other class We have our value and we have our text already...
    ClsWriteRecord.addNewRecordMore(dblTestScore, strTest)

End Sub
End Class

ありがとう、それがあなたにとってどのように機能するか教えてください...

于 2013-03-02T04:45:18.350 に答える