コード例 #1
0
        private void ClassBrowseB_Click(object sender, EventArgs e)
        {
            List <AssemblyDllInfo> assemblies = new List <AssemblyDllInfo>();

            if (_tvdml.AssembliesList != null)
            {
                assemblies = (_tvdml.AssembliesList as List <AssemblyDllInfo>);
            }
            ClassChooserDialogForm ccdf = new ClassChooserDialogForm();

            ccdf.LoadedAssemblies = assemblies;
            DialogResult dr = ccdf.ShowDialog();

            if (dr == System.Windows.Forms.DialogResult.OK)
            {
                var eitem = ccdf.EditableItem;
                ClassNameEd.Text = eitem.ToString();
                try
                {
                    MainTree.Nodes.Clear();
                    PropertiesEd.SelectedObject = null;
                    object obj = (ccdf.EditableItem as Type).Assembly.CreateInstance((ccdf.EditableItem as Type).FullName);
                    _tvdml = anvlib.Classes.TypedTreeViewDisplayMemberList.GenerateTreeDescriptionFromObject(obj, null);
                    GenerateTree();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            _tvdml.AssembliesList = ccdf.LoadedAssemblies;
        }
        public TypedTreeViewDataSourceDescriptionDialogForm(TypedTreeViewDisplayMemberList tvdml)
        {
            _tvdml = tvdml;
            InitializeComponent();

            if (_tvdml.Count > 0)
                GenerateTree();
        }
コード例 #3
0
        public TypedTreeViewDataSourceDescriptionDialogForm(TypedTreeViewDisplayMemberList tvdml)
        {
            _tvdml = tvdml;
            InitializeComponent();

            if (_tvdml.Count > 0)
            {
                GenerateTree();
            }
        }
コード例 #4
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            /*IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
            if (edSvc == null)
                MessageBox.Show("1");
            else
                MessageBox.Show(edSvc.GetType().ToString());*/
            if (value == null)
                value = new TypedTreeViewDisplayMemberList();
            //MessageBox.Show(context.GetType().ToString());
            TypedTreeViewDisplayMemberList obj_state = (value as TypedTreeViewDisplayMemberList).Clone();
            TypedTreeViewDataSourceDescriptionDialogForm dsddf = new TypedTreeViewDataSourceDescriptionDialogForm(obj_state);
            DialogResult dr = dsddf.ShowDialog();
            if (dr == DialogResult.OK)
                value = dsddf.TypedTreeViewDisplayMemberList;

            return value;
        }
コード例 #5
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            /*IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
             * if (edSvc == null)
             *  MessageBox.Show("1");
             * else
             *  MessageBox.Show(edSvc.GetType().ToString());*/
            if (value == null)
            {
                value = new TypedTreeViewDisplayMemberList();
            }
            //MessageBox.Show(context.GetType().ToString());
            TypedTreeViewDisplayMemberList obj_state           = (value as TypedTreeViewDisplayMemberList).Clone();
            TypedTreeViewDataSourceDescriptionDialogForm dsddf = new TypedTreeViewDataSourceDescriptionDialogForm(obj_state);
            DialogResult dr = dsddf.ShowDialog();

            if (dr == DialogResult.OK)
            {
                value = dsddf.TypedTreeViewDisplayMemberList;
            }

            return(value);
        }
コード例 #6
0
 private void ClassNameEd_KeyPress(object sender, KeyPressEventArgs e)
 {
     if (e.KeyChar == '\r')
     {
         try
         {
             var    type = Type.GetType(ClassNameEd.Text);
             object obj  = Activator.CreateInstance(type);
             if (obj != null)
             {
                 _tvdml = anvlib.Classes.TypedTreeViewDisplayMemberList.GenerateTreeDescriptionFromObject(obj, null);
                 GenerateTree();
             }
             else
             {
                 MessageBox.Show("Null");
             }
         }
         catch (Exception e1)
         {
             MessageBox.Show(e1.Message);
         }
     }
 }
 private void ClassBrowseB_Click(object sender, EventArgs e)
 {
     List<AssemblyDllInfo> assemblies = new List<AssemblyDllInfo>();
     if (_tvdml.AssembliesList != null)
         assemblies = (_tvdml.AssembliesList as List<AssemblyDllInfo>);
     ClassChooserDialogForm ccdf = new ClassChooserDialogForm();
     ccdf.LoadedAssemblies = assemblies;
     DialogResult dr = ccdf.ShowDialog();
     if (dr == System.Windows.Forms.DialogResult.OK)
     {
         var eitem = ccdf.EditableItem;
         ClassNameEd.Text = eitem.ToString();
         try
         {
             MainTree.Nodes.Clear();
             PropertiesEd.SelectedObject = null;
             object obj = (ccdf.EditableItem as Type).Assembly.CreateInstance((ccdf.EditableItem as Type).FullName);
             _tvdml = anvlib.Classes.TypedTreeViewDisplayMemberList.GenerateTreeDescriptionFromObject(obj, null);
             GenerateTree();
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message);
         }
     }
     _tvdml.AssembliesList = ccdf.LoadedAssemblies;
 }
 private void ClassNameEd_KeyPress(object sender, KeyPressEventArgs e)
 {
     if (e.KeyChar == '\r')
     {
         try
         {
             var type = Type.GetType(ClassNameEd.Text);
             object obj = Activator.CreateInstance(type);
             if (obj != null)
             {
                 _tvdml = anvlib.Classes.TypedTreeViewDisplayMemberList.GenerateTreeDescriptionFromObject(obj, null);
                 GenerateTree();
             }
             else
                 MessageBox.Show("Null");
         }
         catch (Exception e1)
         {
             MessageBox.Show(e1.Message);
         }
     }
 }
コード例 #9
0
 /// <summary>
 /// Метод заполняющий контролсы типа TreeView
 /// </summary>
 /// <param name="DataSource">Источник данных</param>
 /// <param name="TreeLeafsInfo">Описание дерева</param>
 protected virtual void FillTreeView(TreeView ctrl, object DataSource, TypedTreeViewDisplayMemberList TreeLeafsInfo)
 {
     ControlFiller.FillTreeViewControl(ctrl, DataSource, TreeLeafsInfo);
 }
コード例 #10
0
 /// <summary>
 /// Метод заполняющий контролсы типа TreeView
 /// </summary>
 /// <param name="DataSource">Источник данных</param>
 /// <param name="TreeLeafsInfo">Описание дерева</param>
 protected virtual void FillTreeView(object DataSource, TypedTreeViewDisplayMemberList TreeLeafsInfo)
 {
     ControlFiller.FillTreeViewControl((listControl as TreeView), DataSource, TreeLeafsInfo);
 }
コード例 #11
0
 /// <summary>
 /// Метод заполняющий контролсы типа TreeView
 /// </summary>
 /// <param name="DataSource">Источник данных</param>
 /// <param name="TreeLeafsInfo">Описание дерева</param>
 protected virtual void FillTreeView(object DataSource, TypedTreeViewDisplayMemberList TreeLeafsInfo)
 {
     ControlFiller.FillTreeViewControl((listControl as TreeView), DataSource, TreeLeafsInfo);
 }
コード例 #12
0
ファイル: TypedTreeView.cs プロジェクト: Lootero4eg/anvlib
 public TypedTreeView()
 {
     _tvdml = new TypedTreeViewDisplayMemberList();
     _tvdml.Parent = this;
 }
コード例 #13
0
ファイル: ControlFiller.cs プロジェクト: Lootero4eg/anvlib
        /// <summary>
        /// Добавочный метод к FillTreeViewControl, рекурсивно заполняющий TreeView
        /// </summary>
        /// <param name="tr">TreeView контролс</param>
        /// <param name="DataSource">Источник данных</param>
        /// <param name="TreeLeafsInfo">Описание дерева</param>
        /// <returns></returns>
        private static TreeNode CreateLeafs(TreeNode tr, object DataSource, TypedTreeViewDisplayMemberList TreeLeafsInfo)
        {
            //--Сделать разбор атрибутов типа DisplayName!!!
            foreach (var Leaf in TreeLeafsInfo)
            {
                //--Если датасорц - Коллекция. Не понимаю зачем я сделал проверку на строку...поизучай этот вопрос на досуге
                if ((DataSource is System.Collections.IEnumerable) && DataSource.GetType() != typeof(string))
                {
                    #region Цикл по коллекции
                    var collection = (DataSource as System.Collections.IEnumerable);
                    foreach (var item in collection)
                    {
                        bool to_be_continue = false;
                        object text;

                        //--если строка, то идем к следующему элементу коллекции
                        if (item.GetType() == typeof(string))
                            to_be_continue = true;

                        #region Если есть только DataSource
                        if (item.GetType().GetProperty(Leaf.DisplayMember) == null && !string.IsNullOrEmpty(Leaf.DataSourceName)/* && !to_be_continue*/)
                        {
                            //--если это примитивное значение
                            if (!item.GetType().IsClass)
                                text = item;
                            else//--иначе это Класс
                            {
                                //--переделать на DisplayCaption
                                if (!string.IsNullOrEmpty(Leaf.DisplayСaption))
                                    text = Leaf.DisplayСaption;
                                else
                                {
                                    text = "";//--проверить нужен ли вообще этот участок кода!!!
                                    if (!(item is System.Collections.IEnumerable))
                                    {
                                        var val = item.GetType().GetProperty(Leaf.DataSourceName).GetValue(item, null);
                                        text = val.GetType().GetProperty(Leaf.DisplayMember).GetValue(val, null);
                                    }
                                }
                            }
                        }
                        else
                        {
                            if (string.IsNullOrEmpty(Leaf.DisplayMember))
                                to_be_continue = true;
                            //--если элемент не строка и DisplayMember != null
                            if (!to_be_continue)
                            {
                                if (item is System.Collections.IEnumerable)
                                {
                                    text = "";
                                    if (!string.IsNullOrEmpty(Leaf.DisplayСaption))
                                        text = Leaf.DisplayСaption;
                                }
                                else
                                    text = item.GetType().GetProperty(Leaf.DisplayMember).GetValue(item, null);
                            }
                            else
                            {
                                if (!string.IsNullOrEmpty(Leaf.DisplayСaption))
                                    text = Leaf.DisplayСaption;
                                else
                                    text = item;
                            }
                        }
                        #endregion

                        #region Если мы считали какоето значение в переменную text
                        if (text != null)
                        {
                            TreeNode mnode = new TreeNode(text.ToString());
                            if (!Leaf.WithoutTag)
                                mnode.Tag = item;
                            //--если индекс картинки мы берем из какого то поля в классе
                            if (string.IsNullOrEmpty(Leaf.ImageIndexByFieldName))
                            {
                                mnode.ImageIndex = Leaf.ImageIndex;
                                mnode.SelectedImageIndex = Leaf.SelectedImageIndex;
                                mnode.StateImageIndex = Leaf.StateImageIndex;
                            }
                            else
                            {
                                object im_idx=null;
                                if (Leaf.ImageIndexByFieldName.IndexOf('.') == -1)
                                    im_idx = item.GetType().GetProperty(Leaf.ImageIndexByFieldName).GetValue(item, null);
                                else
                                    im_idx = anvlib.Utilites.ObjectInspector.GetObjectPropertyValueRecursive(item, Leaf.ImageIndexByFieldName);
                                if (im_idx != null && im_idx.GetType() == typeof(int))
                                {
                                    mnode.ImageIndex = (int)im_idx;
                                    mnode.SelectedImageIndex = (int)im_idx;
                                    mnode.StateImageIndex = (int)im_idx;
                                }
                            }
                            tr.Nodes.Add(mnode);

                            #region Если есть дочерние ветки
                            if (Leaf.ChildDisplayMembers != null)
                            {
                                foreach (var SubLeaf in Leaf.ChildDisplayMembers)
                                {
                                    if (SubLeaf.DataSourceName != null)
                                    {
                                        if (Leaf.DataSourceName != SubLeaf.DataSourceName || SubLeaf.IsRecusiveCollection)
                                        {
                                            //--переделать на DisplayCaption
                                            if (!string.IsNullOrEmpty(SubLeaf.DisplayMember) && !string.IsNullOrEmpty(SubLeaf.DisplayСaption))
                                            {
                                                TypedTreeViewDisplayMemberList tdml = new TypedTreeViewDisplayMemberList();
                                                tdml.Add(SubLeaf);
                                                CreateLeafs(mnode, item, tdml);
                                            }
                                            else
                                            {
                                                var innercol = item.GetType().GetProperty(SubLeaf.DataSourceName).GetValue(item, null);
                                                TypedTreeViewDisplayMemberList tdml = new TypedTreeViewDisplayMemberList();
                                                tdml.Add(SubLeaf);
                                                CreateLeafs(mnode, innercol, tdml);
                                            }
                                        }
                                        else
                                        {
                                            TypedTreeViewDisplayMemberList tdml = new TypedTreeViewDisplayMemberList();
                                            tdml.Add(SubLeaf);
                                            CreateLeafs(mnode, item, tdml);
                                        }
                                    }
                                    else
                                    {
                                        TypedTreeViewDisplayMemberList tdml = new TypedTreeViewDisplayMemberList();
                                        tdml.Add(SubLeaf);
                                        CreateLeafs(mnode, SubLeaf.DisplayMember, tdml);
                                    }
                                }
                            }
                            #endregion
                        }
                        #endregion
                    }
                    #endregion
                }
                else
                {
                    //--если DataSource = null, но является не коллекцией
                    if (DataSource != null)
                    {
                        object text;
                        if (!string.IsNullOrEmpty(Leaf.DisplayMember) && !string.IsNullOrEmpty(Leaf.DisplayСaption))
                            text = Leaf.DisplayMember.Remove(0, 7);
                        else
                        {
                            text = "";
                            if (!(DataSource is ValueType) && DataSource.GetType() != typeof(string))
                            {
                                if (!string.IsNullOrEmpty(Leaf.DisplayMember))
                                    text = DataSource.GetType().GetProperty(Leaf.DisplayMember).GetValue(DataSource, null);
                                else if (!string.IsNullOrEmpty(Leaf.DisplayСaption))
                                    text = Leaf.DisplayСaption;
                                else
                                    text = DataSource;
                            }
                        }
                        if (text != null)
                        {
                            TreeNode mnode = new TreeNode(text.ToString());
                            if (!Leaf.WithoutTag)
                                mnode.Tag = DataSource;
                            if (string.IsNullOrEmpty(Leaf.ImageIndexByFieldName))
                            {
                                mnode.ImageIndex = Leaf.ImageIndex;
                                mnode.SelectedImageIndex = Leaf.SelectedImageIndex;
                                mnode.StateImageIndex = Leaf.StateImageIndex;
                            }
                            else
                            {
                                var im_idx = DataSource.GetType().GetProperty(Leaf.ImageIndexByFieldName).GetValue(DataSource, null);
                                if (im_idx != null && im_idx.GetType() == typeof(int))
                                {
                                    mnode.ImageIndex = (int)im_idx;
                                    mnode.SelectedImageIndex = (int)im_idx;
                                    mnode.StateImageIndex = (int)im_idx;
                                }
                            }

                            tr.Nodes.Add(mnode);
                            if (Leaf.ChildDisplayMembers != null)
                            {
                                foreach (var SubLeaf in Leaf.ChildDisplayMembers)
                                {
                                    if (DataSource.GetType() != typeof(string))
                                    {
                                        var innercol = DataSource.GetType().GetProperty(SubLeaf.DataSourceName).GetValue(DataSource, null);
                                        TypedTreeViewDisplayMemberList tdml = new TypedTreeViewDisplayMemberList();
                                        tdml.Add(SubLeaf);
                                        CreateLeafs(mnode, innercol, tdml);
                                    }
                                    else
                                    {
                                        TypedTreeViewDisplayMemberList tdml = new TypedTreeViewDisplayMemberList();
                                        tdml.Add(SubLeaf);
                                        CreateLeafs(mnode, SubLeaf.DataSourceName, tdml);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return tr;
        }
コード例 #14
0
ファイル: ControlFiller.cs プロジェクト: Lootero4eg/anvlib
 /// <summary>
 /// Метод заполняющий контрол типа TreeView
 /// </summary>
 /// <param name="treeview">Контролс, в котором мы будем работать</param>
 /// <param name="DataSource">Коллекция или объект из которого мы будем строить дерево.
 /// Точнее даже это и есть само дерево, только не построенное в тривью</param>
 /// <param name="TreeLeafsInfo">Описание структуры дерева.
 /// Можно делать несколько веток парента, но только один уровень вложенности, паернт.парент не продуман пока</param>
 public static void FillTreeViewControl(TreeView treeview, object DataSource, TypedTreeViewDisplayMemberList TreeLeafsInfo)
 {
     TreeNode tr = new TreeNode();
     tr = CreateLeafs(tr, DataSource, TreeLeafsInfo);
     foreach (TreeNode item in tr.Nodes)
         treeview.Nodes.Add(item);
 }
コード例 #15
0
 /// <summary>
 /// Метод заполняющий контролсы типа TreeView
 /// </summary>
 /// <param name="DataSource">Источник данных</param>
 /// <param name="TreeLeafsInfo">Описание дерева</param>
 protected virtual void FillTreeView(TreeView ctrl, object DataSource, TypedTreeViewDisplayMemberList TreeLeafsInfo)
 {
     ControlFiller.FillTreeViewControl(ctrl, DataSource, TreeLeafsInfo);
 }
コード例 #16
0
ファイル: TypedTreeView.cs プロジェクト: Lootero4eg/anvlib
 public TypedTreeView()
 {
     _tvdml        = new TypedTreeViewDisplayMemberList();
     _tvdml.Parent = this;
 }