1

ファイルの保存ダイアログを表示するように設定していますが、ダイアログをクリックすると、タブや何も表示されずに背景に消えます。私の質問は、ダイアログをモーダルにするにはどうすればよいですか? 意味がわからない場合は、メモ帳に移動して名前を付けて保存し、ダイアログをクリックしてみてください。ウィンドウが点滅し、他の操作を行う前にダイアログで何かを行う必要があることを知らせる素敵な音が聞こえます。ダイアログでこの効果を実現したいのですが、方法がわかりません。Form.Modalプロパティはフォームを処理し、これはフォームではないため、単純に使用することはできません。誰かがここで私を助けてくれますか?

ありがとう。

編集:

これがダイアログの表示方法です。XNAで実行されており、[名前を付けて保存]ボタンをクリックすると、EntrySelected()メソッドが呼び出されます:

    private void EntrySelected(object sender, EventArgs e) {
        if(sender == saveAsEntry) {
            sfd = new SaveFileDialog();
            thread = new Thread(ShowSaveDialog);
            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
        }
        ...
    }
    private void ShowSaveDialog() {
        if(sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
            World.Save(sfd.FileName);
            thread.Abort();
        }
        else {
            thread.Abort();
        }
    }
4

1 に答える 1

2

実際には、ダイアログはフォームです。上記のコメントが示すように、Show メソッドがないため、モーダル ダイアログとして開く ShowDialog() コマンドを使用する必要があります。

すなわち

SaveFileDialog1.ShowDialog();

あなたの編集に基づいて、所有者をダイアログに割り当てるShowDialogのバージョンがあります。

SaveFileDialog1.ShowDialog(dialogOwner);

上記のリンクから:

このバージョンの ShowDialog メソッドを使用すると、表示されるダイアログ ボックスを所有する特定のフォームまたはコントロールを指定できます。このメソッドのパラメーターを持たないバージョンを使用すると、表示されているダイアログ ボックスは、アプリケーションの現在アクティブなウィンドウによって自動的に所有されます。

于 2012-07-03T01:41:19.353 に答える