0

私のコードでは、2つのクラスを使用しています。1つにはUIフォームが含まれ、もう1つにはファイルに書き込むためのメソッドが含まれます。コーディング中に、理解できない動作を見つけました。以下のコードは、関連する部分(私が信じているもの)を示しています。MsgBox簡単にするために、ファイル書き込み部分はaに置き換えられています。

1つの形式で次のコントロールがあります。

NumericUpDown Button

次のクラスとメソッドを使用します。

Public Class One
    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
        Dim t As New Two
        t.Show()
    End Sub
End Class

Public Class Two
    Public Sub Show()
        Dim o As New One
        MsgBox(o.NumericUpDown.Value)
    End Sub
End Class

これで、デフォルトをクリックするButtonとデフォルトNumericUpDown.Valueが表示されます。この値を調整してボタンをもう一度クリックすると、古いデフォルト値が表示され続けます。

次のコードでは、パーツを削除 し、他のクラスを参照するためにDim o as New One使用しています。Oneそれで:

Public Class Two
    Public Sub Show()
        MsgBox(One.NumericUpDown.Value)
    End Sub
End Class

これで、すべてが正常に機能します。をクリックするButtonと、デフォルトで NumericUpDown.Value表示されます。値を調整し、をクリックするButtonと、調整された値が表示されます。

Dim o as New Oneこの振る舞いを変える割り当てはどのようになっていますか?

これはvb.netを使用したコーディングの最初の週なので、意味のないことをしているかもしれませんが、私にとってはうまくいきます。実際のコードを入力した唯一の理由Dim o as New Oneは、クラスを参照するたびに「One」と入力する必要はなく、「o」と入力するだけでよいということです。どうやらこれは進むべき道ではないようですが、私はその理由を知りたいと思っています。

4

1 に答える 1

2

代わりに次のコードを実行してみてください。

Public Class One
    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
        Dim t As New Two
        t.Show(Me)
    End Sub
End Class

Public Class Two
    Public Sub Show(ByVal o As One)
        MsgBox(o.NumericUpDown.Value)
    End Sub
End Class

電話をかけるDim o as New Oneと、フォームの新しいインスタンスが作成されるため、現在のフォームインスタンスの値は表示されません。

于 2012-05-15T03:04:16.893 に答える