0

あるフォームから別のフォームにラベルを更新しようとしています。コードは正常にコンパイルされていますが、更新されていませんか?

Class MainWindow 

    Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        Dim frm As New Window1
        frm.Show()
    End Sub
End Class

2 番目の形式:

Public Class Window1

    Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
        My.Windows.MainWindow.Label1.Content = "dsfdsfsdf"
        My.Windows.MainWindow.Label1.UpdateLayout()
    End Sub
End Class

メインフォームのラベルは更新されません...それがより明確になることを願っています

4

1 に答える 1

1

したがって、実際に必要なコードは次のとおりです。

公開クラス Window1

Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
    DirectCast(Application.Current.MainWindow, MainWindow).Label1.Content = "test"
End Sub

クラス終了

My.Windowsコレクションが何であるかはApplication.MainWindowわかりませんが、プロジェクトのプロパティ (または app.xaml.cs ファイルで設定したもの) で起動オブジェクトとして設定されているウィンドウへの参照を提供します。以前は、おそらくWindow1クラスの別のインスタンスへの参照を取得していたため、実行されていて例外をスローしていませんでしたが、ウィンドウの実際に表示されているインスタンスではなかったため、変更は見られませんでした。

于 2012-06-18T20:05:37.690 に答える