前提・実現したいこと
WPFで機器との通信可否をチェックするソフトを作成しております。
機器との通信結果を画面上に表示するようにしたいです。
各通信機器毎に、MainWindow.csで動的にTextBoxを作成しております。作成したTextBoxはHandleと一緒に共通変数のListに入れています。
他クラスで通信結果が出ましたら、共通変数のList内から同じhandleを見つけて、その中にあるtextBoxをいじっております。
発生している問題・エラーメッセージ
他クラスで出た通信結果をMainWindowのテキストブロックに反映しようとしたのですが、表示されません。
c#
1〈他クラスから〉 2var eventMc = mcList.Where(w => w.handle == this.handle).FirstOrDefault; 3eventMc.textBox = 通信結果;
また、他クラスからMainWindowクラス内のテキストブロック書き換える関数を呼び出しても同じく表示されませんでした。
c#
1〈他クラスから〉 2var eventMc = mcList.Where(w => w.handle == this.handle).FirstOrDefault; 3WriteTextBox(eventMc, 通信結果); 4 5〈MainWindow.cs〉 6public static void WriteTextBox(MC eventMc, string text) 7{ 8eventMc.textBox = 通信結果; 9}
補足情報(FW/ツールのバージョンなど)
・VisualStudio 2019
恐らく、インスタンスを新規作成してるから。
回答ありがとうございます。
至急解決しないといけない案件で、無知なままでの質問申し訳ございません。
上記の質問誤った書き方をしていました。
訂正致します。
----------------------
各通信機器毎に、MainWindow.csで動的にTextBoxを作成しております。作成したTextBoxはHandleと一緒に共通変数のListに入れています。
他クラスで通信結果が出ましたら、共通変数のList内から同じhandleを見つけて、その中にあるtextBoxをいじっております。
このような場合でもtextboxのインスタンスを新規作成しているのでしょうか?
var eventMc = mcList.Where(w => w.handle == this.handle).FirstOrDefault;
eventMc.textBox = 通信結果;
> w.handle == this.handle
この時点で他のクラスからじゃないですよね。
なんだかさっぱりわかりませんが、やりたいことって↓とかじゃないんですか?
eventMc.textBox.Text = "なんかえらー";
表示されないという事は、Null文字”” か イベント処理自体が発火してないかのどちらかしかないと思うのですが。
>他クラスからMainWindowクラス内のテキストブロック書き換える関数を呼び出し
とあるので、呼び出し自体は出来てるのではないかと思います。私も同じような事してるんで。
インスタンスをMainwindow.cs内で作り、他クラスで参照するとかは
Mainwindow main;
OtheerClass other = New OtherClass.What'sUpMethod(this);
みたいな感じで簡単に渡せますから。
あなたの回答
tips
プレビュー