フォームには、(マウスクリックで)親アプリケーションからデータを取得する機能を持つボタンが1つあります。
親アプリのハンドルを持っているのですが、フォームがモーダルなので上に持って行こうとしても選択できません。
ここでの要件は、モードレス ダイアログを開き、閉じるまで待機することです。それ以外の場合は、さらに進んで以下の機能を実行します。
別のオプションは、モーダルとしてフォームを開くことができ、実行時に modaless に変更できます。
しかし、それを行う方法は?:)
WinForms と仮定すると...ダイアログを作成するときに、そのFormClosed
イベントにフックします。閉じられると、このイベントが発生し、元のフォームに通知されます (イベント ハンドラーが元のフォームにあると仮定します)。
何かのようなもの:
class MainForm : Form
{
private ChildForm _childForm;
public void ShowChildForm()
{
_childForm = new ChildForm();
_childForm.FormClosed += (s, e) => MessageBox.Show("Child was closed.");
_childForm.Show();
}
}
とはいえ、閉じるまで待つ必要がある場合は、モーダルダイアログのように聞こえます。
_childForm.ShowDialog();
子フォームが閉じられるまでメインフォームでブロックされます。クローズド イベントをフックする必要はありません。
あなたの質問は完全には意味がありませんが、これまでに答えてみてください-
を使用してモーダルダイアログを表示できます
Form1.ShowDialog
その後、別のモーダルダイアログを表示する必要がある場合は、次のように実行できます。
Form2.ShowDialog
モーダルダイアログが現在表示されている場合、非モーダルダイアログを表示することはできません。