0

バインディング ナビゲーター ツールストリップの a ボタンからトリガーされる印刷ダイアログがあり、印刷ダイアログ ボックスにフォーカスを与えるためにデリゲートを作成しました。私の質問は、ダイアログの結果がOKの場合、どのように印刷をトリガーするのですか?

これは私のコードです...

    delegate DialogResult ShowPrintDialogue();

    private void trackPrint_Click(object sender, EventArgs e)
    {
        PrintDocument docToPrint = new PrintDocument();
        trackPrintDialog.AllowSomePages = true;
        trackPrintDialog.Document = docToPrint;
        docToPrint.DefaultPageSettings.Landscape = true;
        docToPrint.DocumentName = "Track";

        ShowPrintDialogue spd = new ShowPrintDialogue(trackPrintDialog.ShowDialog);
        this.BeginInvoke(spd);

        if (spd() == DialogResult.OK) // Doesn't work...
        {
            docToPrint.PrintPage += new PrintPageEventHandler(PrintImage);
            docToPrint.Print();
        }
    }
4

1 に答える 1

0

なぜこれをやりたいのか正確にはわかりません。呼び出すtrackPrintDialog.ShowDialog()と、印刷ダイアログが表示され、ユーザーの操作にフォーカスする必要があります。また、ダイアログの下のコントロールが変更されないようにする必要があります。

呼び出し.BeginInvokeとは、コードの非同期セクションを呼び出していることを意味します。つまり、すぐに戻り、その後のコードを実行し続けます。これが意味することは、ユーザーがほとんど瞬時にOK印刷ダイアログをクリックしていないため、if ステートメントは と評価さspd()None、何も印刷されないということです。

PrintDialogブロックすることを目的としているため、デリゲートを使用して印刷ダイアログを表示およびフォーカスしないでください。

于 2014-12-18T05:50:37.370 に答える