123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- namespace CommonFroms.G2D
- {
- public partial class G2DListSelectEditor<T> : Form
- // where T : class
- {
- private static Rectangle last_open_rect = Rectangle.Empty;
- public T SelectedObject
- {
- get;
- private set;
- }
- public G2DListSelectEditor(List<T> list, T selected = default(T))
- : this(list.ToArray(), selected) { }
- public G2DListSelectEditor(T[] list, T selected = default(T))
- {
- InitializeComponent();
- this.listView1.Visible = true;
- this.treeView1.Visible = false;
- foreach (T e in list)
- {
- ListViewItem item = new ListViewItem(e.ToString());
- item.Tag = e;
- listView1.Items.Add(item);
- }
- if (selected != null)
- {
- listView1.SelectedItems.Clear();
- foreach (ListViewItem item in listView1.Items)
- {
- if (object.Equals(item.Tag, selected))
- {
- item.Selected = true;
- return;
- }
- }
- }
- }
- public G2DListSelectEditor(TreeNode root, ImageList imageList, object selected)
- {
- InitializeComponent();
- this.listView1.Visible = false;
- this.treeView1.Visible = true;
- this.treeView1.ImageList = imageList;
- TreeNode tr = TreeNodeDuplicate(root);
- this.treeView1.Nodes.Add(tr);
- this.treeView1.CollapseAll();
- tr.Expand();
- if (selected != null)
- {
- foreach (TreeNode tn in G2DTreeNodeBase.GetAllNodes(treeView1.Nodes))
- {
- if (tn.Tag == selected)
- {
- treeView1.SelectedNode = tn;
- tn.Parent.Expand();
- return;
- }
- }
- }
- }
- public static TreeNode TreeNodeDuplicate(TreeNode root)
- {
- TreeNode node = new TreeNode(root.Text);
- node.Tag = root.Tag;
- node.ImageIndex = root.ImageIndex;
- node.SelectedImageIndex = root.SelectedImageIndex;
- if (!string.IsNullOrEmpty(root.ImageKey))
- node.ImageKey = root.ImageKey;
- if (!string.IsNullOrEmpty(root.SelectedImageKey))
- node.SelectedImageKey = root.SelectedImageKey;
- foreach (TreeNode tn in root.Nodes)
- {
- TreeNode ctn = TreeNodeDuplicate(tn);
- node.Nodes.Add(ctn);
- }
- if (root.IsExpanded)
- {
- node.Expand();
- }
- else
- {
- node.Collapse();
- }
- return node;
- }
- private void G2DListSelectEditor_Load(object sender, EventArgs e)
- {
- if (last_open_rect != Rectangle.Empty)
- {
- this.Bounds = last_open_rect;
- }
- if (treeView1.Visible && treeView1.Nodes.Count > 0)
- {
- treeView1.Nodes[0].Expand();
- }
- }
- private void G2DListSelectEditor_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (listView1.Visible)
- {
- if (listView1.SelectedItems.Count > 0)
- {
- SelectedObject = (T)listView1.SelectedItems[0].Tag;
- }
- }
- else if (treeView1.Visible)
- {
- if (treeView1.SelectedNode != null)
- {
- SelectedObject = (T)treeView1.SelectedNode.Tag;
- }
- }
- last_open_rect = this.Bounds;
- }
- }
- }
|