フォームがあります。
その形式では、実行時間の長いロジックを実行するため、新しいスレッドでクラスのインスタンスを作成します。このフォームにより、ユーザーはこのロジック/スレッドをキャンセルすることもできます。
入力が必要な場合、そのクラスは新しいフォームを開きます。
新しいフォームが他のフォームの後ろに表示されることがあります。
クラスにプロパティを設定します。
public Form ParentForm{get;set;}
私は今できる:
MyForm form = new MyForm();
form.ShowDialog(ParentForm);
ただし、を呼び出すとクロススレッド例外が発生しShowDialog(ParentForm)
ます。
私はInvokeRequired
どういうわけか使用できることを知っていますが、プロパティでどのように使用するかはわかりません。
ありがとう
更新:これを実行しようとしましたが、それでも例外が発生します:
MyForm form = new MyForm();
form.ShowDialog(GetParentForm());
private Form GetParentForm()
{
//You have to Invoke() so you can wait for the function to return and obtain its return value.
if (ParentForm.InvokeRequired)
{
return (Form)ParentForm.Invoke(new Func<Form>(() => GetParentForm()));
}
else
{
return ParentForm;
}
}