1

私はここでかなり奇妙な状況にいます。(組み込みの代わりに) カスタム MessageBox フォームを作成しましたMessageBox.Show。以下のコードは、必要なときにフォームを呼び出すために使用するものです。

    internal DialogResult ShowCustomMessageBox(string message, string caption, Icon icon = null)
    {
        var result = DialogResult.None;
        MainForm.Get.UISynchContext.Send(s =>
        {
            var messageBox = new DialogBox
            {
                Icon = icon,
                Text = caption,
                rtbInDialogBox = { Text = message }
            };
            result = messageBox.ShowDialog();
            messageBox.Dispose();
        }, null);
        return result;
    }

これを実行するmessageBox.ShowDialog();と、messageBox インスタンスが既に破棄されているというエラー メッセージが表示されます。

コードを同期コンテキストに投稿したとき、MainForm が (他のスレッドとは対照的に) コード自体を実行すると確信していましたが、messageBox が既に破棄されていると表示される理由がわかりません。

何か案は?

4

1 に答える 1

1

問題が見つかりました。どうやら、ダイアログ ボックスの所有者を指定する必要があります。result = messageBox.ShowDialog(MainForm.Get);

于 2015-06-03T16:37:10.473 に答える