2

デスクトップアプリケーションでPrintDialogを使用しています。Buttonまたはコンテキストメニューから呼び出されると、正常に機能します。しかし、PrintDialogを呼び出すためにツールチップボタンをクリックすると、printdialogウィンドウがアクティブであるにもかかわらず、印刷ボタンにフォーカスが移りません。印刷物を取得するには、2回クリックする必要があります。

私が得た解決策は、デリゲートでBeginInvokeを使用して非同期を呼び出すことです。これで、次のコードでフォーカスを取得できます。

ShowThePrintDialog printD = new ShowThePrintDialog(p.ShowDialog); this.BeginInvoke(printD);

DialogResultをキャプチャし、printdialogでクリックされたボタンに基づいてさらに進みます。

BeginInvokeの使用中にDialogResultをキャプチャする方法を教えてもらえますか?

ラマン

4

1 に答える 1

2

ツールストリップボタンのクリックイベントが終了しないため、PrintDialogはフォーカスを取得しません。これは、タイマーを使用して解決できます。

private void toolStripButtonPrint1_Click(object sender, EventArgs e)
{
    timerPrint1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
    timerPrint1.Stop();
    if (printDialog1.ShowDialog() == DialogResult.OK)
    {
        // do your stuf
    }
}
于 2011-04-19T13:21:25.543 に答える