問題
そのため、使用するさまざまな設定を含めるために子フォームを使用する親フォームがあります。設定フォームには、datagridviews、textboxes、listviews などがあります。親フォームは「MainForm」と呼ばれ、設定フォームは「SQL_Settings」と呼ばれます。親フォーム内の子フォームからアイテムを参照するたびに、間違った結果が得られます。
例えば:
Sql_settings.Datagridview.rows.count
値 1 を返しますが、物理的に複数の行が含まれていることがわかります。
もう一つの例:
Sql_settings.Textbox1.text
テキストが含まれていても空白を返します。
考えられる理由は?
マルチスレッドとデリゲートを試した後、この問題が発生し始めました。ある時点で次のコマンドを使用していました。
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = False
しかし、代わりに正しく行うことを決定して削除しました。このコマンドから何かが「残っている」のではないかと考えていますか?私はそれについて完全に間違っている可能性があります..
追加情報
Dim data_to_pass(2) As Object
data_to_pass(0) = SQL_Settings.DataGridView1(3, sql_on).Value
data_to_pass(1) = part_information
data_to_pass(2) = ListView8
Dim add_results_thread As New Threading.Thread(AddressOf add_results_to_list)
add_results_thread.IsBackground = True
add_results_thread.Priority = Threading.ThreadPriority.Highest
add_results_thread.Start(data_to_pass)
ただし、これは複数回実行されます。スレッドが完了すると、トリガーされて別のスレッドが実行されます。おそらくこれが問題の原因ですか?