1

フォームには、(マウスクリックで)親アプリケーションからデータを取得する機能を持つボタンが1つあります。

親アプリのハンドルを持っているのですが、フォームがモーダルなので上に持って行こうとしても選択できません。

ここでの要件は、モードレス ダイアログを開き、閉じるまで待機することです。それ以外の場合は、さらに進んで以下の機能を実行します。

別のオプションは、モーダルとしてフォームを開くことができ、実行時に modaless に変更できます

しかし、それを行う方法は?:)

4

2 に答える 2

3

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();

子フォームが閉じられるまでメインフォームでブロックされます。クローズド イベントをフックする必要はありません。

于 2012-04-19T12:42:44.383 に答える
-1

あなたの質問は完全には意味がありませんが、これまでに答えてみてください-

を使用してモーダルダイアログを表示できます

Form1.ShowDialog

その後、別のモーダルダイアログを表示する必要がある場合は、次のように実行できます。

Form2.ShowDialog

モーダルダイアログが現在表示されている場合、非モーダルダイアログを表示することはできません。

于 2012-04-19T13:03:12.270 に答える