using System.ComponentModel; using Pf2eModel; using Pf2eModel.Model.Enum; namespace Pf2eViewer; /// /// Основная форма приложения. /// public partial class MainViewForm : Form { /// /// Контекст базы данных. /// public Pf2eDbContext Context = new(); /// /// Элемент управления для отображения дерева сущностей. /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public EntityView? CurrentView { get => EntityTreeViewerControl.EntityView; set { EntityTreeViewerControl.EntityView = value; Application.DoEvents(); } } /// /// Конструктор класса . /// public MainViewForm() { InitializeComponent(); DatabaseViewer.EntityChange += DatabaseViewer_EntityChange; Reset(); } /// /// Сброс состояния формы. /// public void Reset() { Context.Dispose(); Context = new(); TypesListBox.DataSource = Context .Entities.Select(e => e.Type) .Distinct() .OrderBy(t => t.ToString()) .ToList(); TypesListBox.SelectedIndex = 0; } /// /// Обработчик события изменения выбранного элемента в списке типов сущностей. /// /// Источник события. /// Данные события. private void TypesListBox_SelectedIndexChanged(object sender, EventArgs _) { if (TypesListBox.SelectedItem is null) { return; } CurrentView = null; DatabaseViewer.Type = (EntityType)TypesListBox.SelectedItem; } /// /// Обработчик события изменения выбранной сущности в дереве сущностей. /// /// Новая выбранная сущность. private void DatabaseViewer_EntityChange(EntityView newEntity) { CurrentView = newEntity; DescriptionTextBox.Text = newEntity.Entity!.Description; } }