3

文字列を変数の名前として使用することは可能ですか? たとえば..
x をプライベート double として宣言しました

 Private TextBox1Store,TextBox2Store,TextBox3Store As Double

これを値を格納するための変数として使用します。

この関数は、ラベルとテキスト ボックス内の数値を乗算し、積を返します。

 Private Function mqtyCalc(ByVal y As Integer, ByVal z As Integer) As Integer
    Dim w As Integer
    w = y * z
    Return w
 End Function

この部分は、3 つのテキスト ボックス イベントを処理します。

 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, TextBox2.TextChanged, TextBox3.TextChanged
    Dim tb As TextBox = sender
    Dim tempObjNm As String
    tempObjNm =    tb.Name + "Strore"
    tempObjNm = mqtyCalc(someVariable.Text, Label1.Text)
End Sub

そして、これは私が解決しようとしている部分です。

 tempObjNm = someVariable.Name + "Strore"
 tempObjNm = mqtyCalc(tb.Text, Label1.Text)

「tempObjNm」は、このサブ内で文字列として宣言されます。
テキストボックス内に値を入力するたびに、このサブは値が挿入されたテキストボックスの名前を取得し、名前は最後に「Store」が追加されて、上記で宣言された変数名を模倣します。例、

temObjNm = TextBox1Store (Private TextBox1Store を模倣)
temObjNm は現在、によって宣言された文字列です。

  Dim tempObjNm As String

文字列として

この部分がサブの収納部分です

 tempObjNm = mqtyCalc(tb.Text, 4)

(tempObjNm = "TextBox1Store" の値に注意してください。

TextBox1Store を印刷すると、0 が印刷されます

それはどうですか?値を格納するためだけに変数を模倣するために文字列を使用することはできませんか?

4

3 に答える 3

1

使えますDictionary(Of String, Double)か?

Private values As New Dictionary(Of String, Double)

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    setValue(sender)
End Sub

Private Sub setValue(sender As Object)
    Dim tb As TextBox = CType(sender, TextBox)
    Dim tbName As String = tb.Name & "Strore"
    If Not values.ContainsKey(tbName) Then
        values.Add(tbName, tb.Text)
    Else
        values(tbName) = tb.Text
    End If
End Sub

Private Function getValue(sender As Object) As Double
    Dim tbName As String = CType(sender, TextBox).Name & "Strore"
    If Not values.ContainsKey(tbName) Then
        Return Double.NaN
    Else
        Return values(tbName)
    End If
End Function
于 2013-03-12T16:49:09.927 に答える
0

私が使用しているコードを共有したいと思います。これが、この質問の将来の視聴者に役立つことを願っています。

Dim tb As TextBox = sender
Dim tempObjNm As String
tempObjNm =    tb.Name + "Strore"
Me.GetType.GetField(tempObjNm).SetValue(Me, CType(mqtyCalc(someVariable.Text, Label1.Text), Double))
于 2019-09-04T07:20:30.670 に答える