Подождать, пока загрузится winform, прежде чем выполнять следующее действие?

Приложение Winform содержит одну форму с элементом управления reportViewer. Когда форма инициализируется, отчет создается, но когда я пытаюсь программно запустить PrintDialog в средстве просмотра отчетов, я получаю сообщение об ошибке «Операции недействительны из-за текущего состояния объекта».

Когда я комментирую строку PrintDialog, форма отчета отображается нормально. Я думаю, что проблема заключается в задержке, поскольку она генерирует форму/отчет. Есть ли способ дождаться загрузки формы перед запуском PrintDialog?

Выдержка из кода:

this.reportViewer1.RefreshReport(); this.reportViewer1.PrintDialog();

ОБНОВИТЬ

Решение (как предложено):

private void form_load(...)
{
    createReport;
    this.reportViewer1.RefreshReport();
}

private void reportViewer1_RenderingComplete(...)
{
    this.reportViewer1.PrintDialog();

}

person John M    schedule 04.10.2011    source источник


Ответы (1)


В этой статье предлагается, что вы не можете/не должны вызывать PrintDialog, пока не сработает событие RenderingComplete:

http://msdn.microsoft.com/en-us/library/microsoft.reporting.winforms.reportviewer.renderingcomplete(v=vs.80).aspx

http://social.msdn.microsoft.com/Forums/en-US/vsreportcontrols/thread/a8993f3e-7787-4e0a-b32f-fcfbf8df8001/

person Jeff    schedule 04.10.2011