2016-08-10 2 views
-1
  • ボタンがクリックされるたびに、DataDisplay のウィンドウインスタンスが
  • 各ウィンドウが は、データごとに5秒をリフレッシュするための方法dispatcherTimer_Tickに各ウィンドウのインスタンスを呼び出す
  • 表示されるように異なるデータを持って作成されます。

注:ボタンをクリックするたびに複数のウィンドウインスタンスが必要なため、DataDisplayをグローバルに宣言したくありません。クラスの同じインスタンスをあるメソッドから別のメソッドに呼び出すにはどうすればよいですか?

コードサンプル:

private void applyBtn_Click(object sender, EventArgs e) 
{ 
     .. 

     DataDisplay dd = new DataDisplay(); 

     //This will create multiple instances of the DataDisplay screen with individual query 

     .. 

} 

private void dispatcherTimer_Tick(object sender, EventArgs e) 
{ 

    .. 

    dd.dataGrid.Items.Refresh(); 

    //Refresh data for each instance of DataDiaplay 
    .. 

} 
+0

あなたが求めていますどのように 'dispatcherTimer_Tick'メソッドがそれぞれの' DataDisplay'インスタンス上のメソッドを呼び出して、それらの値をリフレッシュすべきことを伝えることができますか? – wablab

+0

はい、まさに私が求めていることです。 – user6701181

答えて

0

あなたはそれクラスレベルのフィールドにする必要があり、いずれかの方法の外に、それはあなたのオブジェクトなどのコレクションを保持:

private List<DataDisplay> allDisplayData = new List<DataDisplay>(); 

private void applyBtn_Click(object sender, EventArgs e) 
{  
    allDisplayData.Add(new DataDisplay()); 
} 

private void dispatcherTimer_Tick(object sender, EventArgs e) 
{ 
    foreach (var dd in allDisplayData) 
    {   
     dd.dataGrid.Items.Refresh(); 
    } 
} 
+0

プライベートDataDisplayの宣言dd = new DataDisplay();ボタンをクリックしても、グローバルに複数のインスタンスを作成することはできません。 – user6701181

+0

別の方法でアクセスするには、それをグローバルに行う必要があります。単一のものではなく、それらの集合を保持することができます。私の更新を参照してください。 –

+0

リストを反復処理するときに、グリッドをリフレッシュしようとする前に 'DataDisplay'インスタンスがまだ開いていることを確認することをお勧めします。それがもはや開いていない場合、あなたはおそらくそれをリストから削除したいでしょう。また、 'applyBtn'をクリックすると(それに応じてリストが変更されるため)、反復処理中にリストへのアクセスを同期させたいと思うかもしれません。 – wablab

関連する問題