コード例 #1
0
ファイル: Edit.cs プロジェクト: zoomerstern/ObjectEdit
 private Dictionary <Type, IFactory> Factory = new Dictionary <Type, IFactory>(); //Массив обработчиков
 //===В случае если открыли форму для редактирования объекта===
 public Edit(string name, dynamic myObj)
 {//Если передали объект на редактирование
     InitializeComponent();
     NewObj = myObj;
     InputFactory();              //регистрация обработчиков
     OutElement(name);            //Выводим свойства+
     //Задваем размер окна:
     Height = PointY.getY() + 75; //Высота
     Width  = 300;                //Ширина
 }
コード例 #2
0
ファイル: Edit.cs プロジェクト: zoomerstern/ObjectEdit
        private void OutProperty()
        {                                                   //Вывод свойств
            Element = new Dictionary <object, ObjElement>();
            var map = (IDictionary <String, Object>)NewObj; //Словарь свойств

            foreach (var property in map)
            {
                if (property.Value != null && Factory.ContainsKey(property.Value.GetType()))
                {                                                                                             //Вывод свойства
                    Label    myLabel         = LabelControl(property.Key.ToString());
                    Control  PropertyControl = Factory[property.Value.GetType()].ReturnControl();             //Элемент связанный с чекбокс и контейнер для свойства
                    ComboBox TypeBox         = TypeControl();                                                 //Инииализация бокса типа объекта
                    TypeBox.SelectedItem = property.Value.GetType().Name;                                     //Вывод названия типа данных
                    ControlAdd(PropertyControl, property.Value.ToString(), new Point(80, PointY.getYplus())); //Вывод контейнера свойства
                    ControlAdd(myLabel, null, new Point(30, PointY.getY() + 3));                              //Вывод лейбла названия свойства
                    ControlAdd(TypeBox, null, new Point(190, PointY.getY()));                                 //Вывод комбобокса типов
                    Element.Add(TypeBox, new ObjElement(myLabel, PropertyControl));                           //Добавление в словарь свойства
                }
            }
        }
コード例 #3
0
ファイル: Edit.cs プロジェクト: zoomerstern/ObjectEdit
        //=================================
        private void BAdd(object sender, EventArgs e)
        {                        //Жобавление нового свойства объекту
            Add frm = new Add(); //Открытие формы на добавление объекта

            if (frm.Enabled != false)
            {
                frm.ShowDialog();
            }
            //==Добавление свойства
            if (frm.NewProperty == null || ((IDictionary <string, Object>)NewObj).ContainsKey(frm.NewProperty.myName))
            {//Есть ли данное свойство
                MessageBox.Show("Такое свойство уже имеется или оно равно null!");
                return;
            }
            try
            {                                                                                                   //Добавление свойства
                var    currFactory = Factory.Where(x => x.Key.Name == frm.NewProperty.myType).FirstOrDefault(); //выбираем обработчик
                object value       = currFactory.Value.ReturnValue(frm.NewProperty.myValue);                    //выводим объект определенного типа
                ((IDictionary <string, Object>)NewObj).Add(frm.NewProperty.myName, value);                      //Добавление свойства в наш объект
                MessageBox.Show("Добавлнно новое совйство " + frm.NewProperty.myName);
            }
            catch
            {//В случае непредусмотренной ошибки
                Console.WriteLine("Возникло исключение!\n Свойсто не добавлено");
                return;
            }
            foreach (var cur in Element)
            {//Очистка элеменотов свойств
                Controls.Remove((Control)cur.Key);
                Controls.Remove(cur.Value.myLabelObject);
                Controls.Remove(cur.Value.myControl);
            }
            PointY.dropY();              //обнуление занчения оси икс
            OutProperty();               //И занеого отображаем на форме элементы свойств
            Height = PointY.getY() + 75; //Высота формы
        }