私は VB と .Net が初めてで、続行できないタスクがあります。
- screen1 の読み込み時にスレッドを開始します。次に、ユーザーは screen2 に移動します。
- screen2 では、スレッドはまだ遅れて実行されています。ユーザーがscreen2でアクション(クリックなど)を実行すると、スレッドがトリガーされ、screen2の要素にアクセスします
- 画面 2 の要素は動的に作成され、IDE で設計されていません。
したがって、本質的に、あるフォームで作成されたスレッドは、別のフォームで動的に作成されたフォーム要素にアクセスする必要があります。
私の質問が単純すぎる場合は、ご容赦ください。明確でない場合はお知らせください。言い換えます。
注: 私が話している要素は、基本的にフロー レイアウト パネル内の画像ボックスです。
前もって感謝します すべての助けが熱心に(今爪を噛んでいます)待っており、大いに感謝しています。
編集
ctThread というスレッドがダッシュボード画面で開始されたとします。
ctThread.start()
このスレッドは無限に実行され、トリガー イベントを待機しています。
一方、ユーザーは QuizScreen という画面に移動し、この画面 (フォーム) で、名前がわかっている動的に作成された要素を更新する必要があります。
そのため、待機中の ctThread (リスナー スレッド) のタイミングが来ると、下のサブルーチンが呼び出されます。
サブ
public sub changeComputerStatus(ByVal node)
Dim flowpanel As FlowLayoutPanel = CType(QuizScreen.FlowLayoutPanel1.Controls("flow_" + node), FlowLayoutPanel)
Dim pictControl As PictureBox = CType(flowpanel.Controls("pict_" + node), PictureBox)
pictControl.Image = System.Drawing.Image.FromFile(Application.StartupPath & "\images\application-on.png")
end sub
ここでノードは変化し続けます。これが、作成する各コントロールを区別する方法です。
注 : このスレッドは、dashboardscreen という画面で開始され、ユーザーは現在別の画面 QuizScreen にいます。
上記のサブルーチンの最初の行が実行され、フローパネルに何も返されません。したがって、次の行に移動するとき、何も参照することはできません。したがって、上記のエラー。