Распечатать Диалог Фокус Проблема - PullRequest
1 голос
/ 07 декабря 2010

Я использую PrintDialog в своем настольном приложении. Когда он вызывается из кнопки или из контекстного меню, он работает нормально. Но когда я нажимаю кнопку всплывающей подсказки для вызова PrintDialog, несмотря на то, что окно printdialog активно, я не получаю фокус на кнопку печати. Мне нужно дважды щелкнуть, чтобы получить отпечаток.

Решение, которое я получил, заключается в использовании BeginInvoke с делегатом для вызова async, и теперь я могу получить фокус с помощью следующего кода.

ShowThePrintDialog printD = новый ShowThePrintDialog (p.ShowDialog); this.BeginInvoke (printD);

Я хочу перехватить DialogResult и продолжить, основываясь на кнопке, нажатой на printdialog.

Кто-нибудь может дать мне идею, как перехватить DialogResult при использовании BeginInvoke?

1011 * комбинационное *

1 Ответ

1 голос
/ 19 апреля 2011

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
    }
}
...