Создание события для TreeView.
Выбираем на основной форме копанет treeView1, переходим в окно событий и создаем событие «NodeMouseClick». Переходим к редактированию кода данного события. Необходимо сделать так чтобы при выделение subItem у нас открывалась дочерняя форма, в заголовке данной формы прописывался текст выделенного документа. Для этого в редактировании события пропишем следующий код.
private bool CreateWorkForm(string sNameForm) { WorkForm newf; newf = new WorkForm(); newf.Text = sNameForm; newf.MdiParent = this; newf.Show(); return true; } private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { bool bFormOpen = (e.Node.Parent != null) ? CreateWorkForm(e.Node.Text) : false; } |
После того как будет прописан данный код, запустим нашу программу, выбирая элементы в дереве, у нас будут создаваться рабочие формы. Однако при повторном выборе документа создается еще одно окно, после добавления следующего кода мы избавимся от этой проблемы.
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { for (int i = this.MdiChildren.Length - 1; i >= 0; i--) { if (MdiChildren[i].Text == e.Node.Text) { MdiChildren[i].Activate(); return; } } bool bFormOpen = (e.Node.Parent != null) ? CreateWorkForm(e.Node.Text) : false; } |
Запустите программу, что получилось?
Создание классов для документов и справочников.
Для работы с нашими документами и справочниками создадим отдельные классы, характеризующие эти документы. Данные классы будут содержать одинаковые имена методов, но выполнять разные действия. Для вызова данных классов в последствии создадим так называемый интерфейс. Каждый класс документа должен содержаться в отдельном файле.
Создадим класс для первого справочника, для этого добавим в проект файл реализации и назовем его Spr1.cs. Пропишем там следующий код.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ASU_Sklad { class TSpr1 { public TSpr1() { // } } } |
Далее создадим интерфейс, который будет наследовать данный класс. Для этого добавим к проекту файл по аналогии с рис. 2.
рис 2.
После добавления файла в окне Solution Explorer мы видим следующее. рис 3.
рис. 3.
Содержимое созданного файла выглядит следующим образом.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ASU_Sklad { public interface IDocuments { } } |
Наследуем наш класс от созданного интерфейса. Для этого перейдем в редактирование файла Spr1.cs и изменим описание класса.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ASU_Sklad { class TSpr1 : IDocuments { public TSpr1() { // } } } |
Теперь наш созданный класс наследуется от интерфейса.
Для следующих операций необходимо переименовать имена subItem нашего TreeView, как указано в таблице, таким образом, имена наших классов, создаваемых для документов будут фактически идентичны именам subItem, единственно, что остается достать имя класса из этих переменных.
Name | Text |
Spr_Spr1_Node | Справочник 1 |
Spr_Spr2_Node | Справочник 2 |
InDoc_InDoc1_Node | Входной документ 1 |
InDoc_InDoc2_Node | Входной документ 2 |
OutDoc_OutDoc1_Node | Выходной документ 1 |