示例#1
0
        private void LoadChild(List <T> list, bool newChild)
        {
            if (list == null)
            {
                return;
            }

            int   dataindex = _control._list.IndexOf(_item);
            int   viewindex = this.ListView.Items.IndexOf(this);
            Color clr       = Color.FromArgb(GetNewLuminance(this.BackColor.R),
                                             GetNewLuminance(this.BackColor.G), GetNewLuminance(this.BackColor.B));

            foreach (T i in list)
            {
                if (newChild)
                {
                    _control._list.Insert(++dataindex, i);
                }
                XmlListViewItem <T> node = new XmlListViewItem <T>(i, _control);
                node.BackColor = clr;
                Children.Add(node);

                if (_control._isLoading)
                {
                    _control._indexCounter++;
                    this.ListView.Items.Insert(_control._indexCounter, node);
                }
                else
                {
                    this.ListView.Items.Insert(++viewindex, node);
                }
            }
        }
示例#2
0
        private void _listView_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            XmlListViewItem <T> node = _listView.Items[e.Index] as XmlListViewItem <T>;

            if (node == null)
            {
                return;
            }

            switch (e.NewValue)
            {
            case CheckState.Checked:
            {
                node.Expand();
                if (node.Valid)
                {
                    node.Item.Enable = true;
                    node.ForeColor   = ActiveColor;
                }
                else
                {
                    e.NewValue = CheckState.Unchecked;
                }
                break;
            }

            case CheckState.Unchecked:
            {
                node.Collaps();
                node.Item.Enable = false;
                node.ForeColor   = DefaultColor;
                break;
            }
            }
        }
示例#3
0
        public void RefreshList(List <T> list)
        {
            _list = list;

            _listView.Items.Clear();
            if (list == null)
            {
                return;
            }

            List <T> rootList = new List <T>();

            foreach (T i in list)
            {
                if (i.Element.IsRoot())
                {
                    rootList.Add(i);
                }
            }

            _isLoading    = true;
            _indexCounter = 0;
            foreach (T i in rootList)
            {
                XmlListViewItem <T> item = _listView.Items.Add(new XmlListViewItem <T>(i, this)) as XmlListViewItem <T>;
                _indexCounter++;
            }
            _isLoading = false;
        }
示例#4
0
        public T GetSelectedItem()
        {
            if (_listView.SelectedItems.Count < 1)
            {
                return(default(T));
            }
            XmlListViewItem <T> item = _listView.SelectedItems[0] as XmlListViewItem <T>;

            return(item.Item);
        }
示例#5
0
 private void DropChild(XmlListViewItem <T> item)
 {
     if (item == null)
     {
         return;
     }
     foreach (XmlListViewItem <T> c in item.Children)
     {
         DropChild(c);
         c.ListView.Items.Remove(c);
         c.Item.Enable = false;
     }
     item.Children.Clear();
 }
示例#6
0
        private void _listView_DoubleClick(object sender, EventArgs e)
        {
            if (_listView.SelectedItems.Count < 1)
            {
                return;
            }
            XmlListViewItem <T> item = _listView.SelectedItems[0] as XmlListViewItem <T>;

            if (item.Valid)
            {
                return;
            }

            if (DoubleClick != null)
            {
                DoubleClick(this, e);
            }
        }