Ошибка при работе с Designerform 2

отредактировано June 2015 Раздел: FastReport .NET
Если объекту FastReport.Design.StandardDesigner.DesignerForm добавить обработчик Closing:

//

var frDesigner = new FastReport.Design.StandardDesigner.DesignerForm();
frDesigner.FormClosing += frDesigner_Closing;

//

А в обработчике аргументу e.Cancel присвоить true:

//

frDesigner_Closing(object obj, FormClosingEventArgs e)
{
e.Cancel = true;
}

//

То после этого шаблон отчета пропадает, дизайнер идет вразнос, а нажатие на любую из первых двух кнопок рядом с ползунком масштабирования приводит к ошибке NullReferenceException.

Комментарии

  • отредактировано 23:03
    Ну что ж, отвечу сам себе, надеюсь, кому-нибудь пригодится. Возможно, есть способ лучше, но я его не нашел. В общем, как у меня в итоге заработало:
    private FastReport.Design.StandardDesigner.DesignerForm frDesigner;
    
    
    private void ShowFRDesigner()
    {
       var _f = new FastReport.Report();
       _f.Load(ваш любимый шаблон); //загрузка шаблона
       _f.RegisterData(DataSet для любимого шаблона); //регистрация набора данных для шаблона в экземпляре fast report
    
       foreach (DataTable _t in (DataSet для любимого шаблона).Tables) // чтобы таблицы были доступны для использования в дизайнере
          {
               _f.GetDataSource(_t.TableName).Enabled = true;
           }
    
       frDesigner = new FastReport.Design.StandardDesigner.DesignerForm(); // создание экземпляра дизайнера
       frDesigner.Designer.UIStyle = FastReport.Utils.UIStyle.VisualStudio2012Light; //мне нравится этот стиль
       frDesigner.Designer.Report = _f; //так надо :)
    
       frDesigner.Designer.Restrictions.DontShowRecentFiles = true; //скрываю "недавние файлы"
    
       frDesigner.Designer.cmdSave.CustomAction += SaveTemplateFromDesigner; //пользовательская процедура на событие сохранения шаблона
    
       frDesigner.Designer.MainMenu.miFileOpen.Visible = false; //меню "открыть" делаю недоступным
       frDesigner.Designer.MainMenu.miFileSaveAs.Visible = false; //меню "сохранить как" делаю недоступным
       frDesigner.Designer.MainMenu.miFileSelectLanguage.Visible = false; //меню "выбор языка" делаю недоступным
       frDesigner.Designer.MainMenu.miFileNew.Visible = false; //меню "создать новый" делаю недоступным
    
       Config.DesignerSettings.CustomSaveReport += new OpenSaveReportEventHandler(DesignerSettings_CustomSaveReport); //сохранение отчета из диалоговой формы при закрытии дизайнера
       Config.UseRibbon = false;
    
       frDesigner.ShowDialog();
    }
    
    
    //сохранение отчета из интерфейса дизайнера
    private void SaveTemplateFromDesigner(object obj, EventArgs e)
    {
         SaveReport();
    }
    
    //сохранение отчета из диалоговой формы при закрытии дизайнера
    private void DesignerSettings_CustomSaveReport(object sender, OpenSaveReportEventArgs e)
    {
         SaveReport();
    }
    

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.