0

UIを更新する関数が1つあります

public void Checking()
{
    // Do Something 
}

プログラムを開いたときにこれらの関数を呼び出したい:メインで呼び出す必要があると思います:

public MainWindow()
{
    InitializeComponent();
    Checking(); 
}

しかし、ここでエラーが発生します:

呼び出しのターゲットによって例外がスローされました。

PS:WPFを使用しています...これに対する解決策はありますか?

4

3 に答える 3

1

コンストラクターでWindowsLoadedイベントをセットアップし、そこからChecking()メソッドを呼び出します。XAMLが完全にロードされるまで、UIはコンストラクターで対話する準備ができていません。WPFには、これが発生したことを通知するイベント(Loadedイベント)があります。

public MainWindow()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    Checking(); 
}

それでもエラーが発生する場合は、内部例外を確認する必要があります。エラーの原因を通知する必要があります。Checking()メソッドをステップ実行して、エラーが発生した行を確認することもできます。

[編集]LoadedイベントとWPFページライフサイクルでのイベントの順序に関する追加のリソースは次のとおりです。

MSDN:FrameworkElement.Loadedイベント コントロールのライフサイクル

于 2013-01-29T18:18:40.010 に答える
0

この機能は、今までと同じように使用できます。ただし、Checking()内の何かは、Panel(または何か)をロードする必要がある場合があります。

パネルがロードされると発生するイベントハンドラーを作成できます。そして、そこからchecking()関数を呼び出すことができます。

<StackPanel Loaded="myStackPanelLoaded" />
于 2013-01-29T05:13:49.950 に答える
0

同じことが私にも起こります。

WPF ではException、フォームのコンストラクターで発生すると、このメッセージがスローされます。のイベントハンドラでChecking()関数を呼び出してみてください。このようにして、プログラムにどのような種類があるかがわかります。FormLoadMainFormException

于 2013-01-29T05:23:31.953 に答える