c#中Treeview

來源:互聯網
上載者:User

c#中Treeview這個WINDOWS FROM控制項的使用對接點的基本操作:加入新接點,加入兄弟接點,刪除接點;
實現代碼如下:

刪除{treeView1.SelectedNode.Remove ( )} ;

接點添加:
private void AddChildNode ( )
{
if ( treeView1.SelectedNode == null )
{
MessageBox.Show ( "請選擇一個節點" , "提示資訊" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
}
else
{
//建立一個節點對象,並初始化
try
{
ArrayList r=new ArrayList();
Form3 f=new Form3();
f.ShowDialog(this);
TreeNode tmp=new TreeNode(f.textBox1.Text);
r.Add(f.textBox1.Text.ToString());
r.Add(f.textBox2.Text.ToString());
r.Add(f.textBox3.Text.ToString());
r.Add(f.textBox4.Text.ToString());
r.Add(f.textBox5.Text.ToString());
r.Add(f.richTextBox1.Text.ToString());
tmp.Tag=r;
tmp.Text=f.textBox1.Text;
ArrayList t=(ArrayList)this.treeView1.SelectedNode.Tag;
if(System.Convert.ToDateTime(f.textBox2.Text.ToString())<=System.Convert.ToDateTime(t[1].ToString()))
{
MessageBox.Show ( "怎麼可能!" , "提示資訊" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
}
else
{
treeView1.SelectedNode.Nodes.Add(tmp);
treeView1.SelectedNode = tmp;
treeView1.ExpandAll ( );
}
}
catch
{
MessageBox.Show ( "正確輸入日期!" , "提示資訊" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
}
}

}
private void AddParent ( )
{
//首先判斷是否選定組件中節點的位置
if ( treeView1.SelectedNode.Parent == null )
{
MessageBox.Show ( "請選擇一個節點" , "提示資訊" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
}
else
{
try
{
ArrayList r=new ArrayList();
Form3 f=new Form3();
f.ShowDialog();
r.Add(f.textBox1.Text.ToString());
r.Add(f.textBox2.Text.ToString());
r.Add(f.textBox3.Text.ToString());
r.Add(f.textBox4.Text.ToString());
r.Add(f.textBox5.Text.ToString());
r.Add(f.richTextBox1.Text.ToString());
TreeNode tmp = new TreeNode (f.textBox1.Text);
tmp.Tag=r;
tmp.Text=f.textBox1.Text;
ArrayList t=(ArrayList)this.treeView1.SelectedNode.Parent.Tag;
if(System.Convert.ToDateTime(f.textBox2.Text)<=System.Convert.ToDateTime(t[1].ToString()))
{
MessageBox.Show ( "怎麼可能!" , "提示資訊" , MessageBoxButtons.OK , MessageBoxIcon.Information );
}
else
{
treeView1.SelectedNode.Parent.Nodes.Add ( tmp ) ;
treeView1.ExpandAll();
}
}
catch
{
MessageBox.Show ( "正確輸入日期!" , "提示資訊" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
}
//在TreeView組件中加入兄弟節點
}
}
遍曆接點的演算法:
public TreeNode FindNode(TreeNode root,string strValue )
{
if(root==null)
return null;
if(root.Text==strValue)
return root;
TreeNode r=null;
foreach(TreeNode node in root.Nodes)
{
r=FindNode(node,strValue);
if(r!=null)
break;
}
return r;
}

序列化實現對TREEVIEW的儲存:
///class2 對TreeView進行序列化
///用於檔案的存讀;
///檔案以二進位寫入
public class TreeViewDataAccess
{

/// TreeViewData
[Serializable()]
public struct TreeViewData
{
public TreeNodeData[] Nodes;

/// 遞迴初始化TreeView資料
public TreeViewData(TreeView treeview)
{
Nodes = new TreeNodeData[treeview.Nodes.Count];
if (treeview.Nodes.Count == 0)
{
return;
}
for (int i = 0; i <= treeview.Nodes.Count - 1; i++)
{
Nodes = new TreeNodeData(treeview.Nodes);
}
}
/// 通過TreeViewData彈出TreeView
public void PopulateTree(TreeView treeview)
{
if (this.Nodes == null || this.Nodes.Length == 0)
{
return;
}
treeview.BeginUpdate();
for (int i = 0; i <= this.Nodes.Length - 1; i++)
{
treeview.Nodes.Add(this.Nodes.ToTreeNode());
}
treeview.EndUpdate();
}
}

/// TreeNodeData
[Serializable()]
public struct TreeNodeData
{
public string Text;
public int ImageIndex;
public int SelectedImageIndex;
public bool Checked;
public bool Expanded;
public object Tag;
public Color BackColor;
public TreeNodeData[] Nodes;
/// TreeNode建構函式
public TreeNodeData(TreeNode node)
{
this.Text = node.Text;
this.ImageIndex = node.ImageIndex;
this.SelectedImageIndex = node.SelectedImageIndex;
this.Checked = node.Checked;
this.BackColor=node.BackColor;
this.Expanded = node.IsExpanded;
this.Nodes = new TreeNodeData[node.Nodes.Count];
this.Tag =node.Tag;
if (node.Nodes.Count == 0)
{
return;
}
for (int i = 0; i <= node.Nodes.Count - 1; i++)
{
Nodes = new TreeNodeData(node.Nodes);
}
}
/// TreeNodeData返回TreeNode
public TreeNode ToTreeNode()
{
TreeNode ToTreeNode = new TreeNode(this.Text, this.ImageIndex, this.SelectedImageIndex);
ToTreeNode.Checked = this.Checked;
ToTreeNode.BackColor=this.BackColor;
ToTreeNode.Tag = this.Tag;
if (this.Expanded)
{
ToTreeNode.Expand();
}
if (this.Nodes == null && this.Nodes.Length == 0)
{
return null;
}
if(ToTreeNode != null && this.Nodes.Length == 0)
{
return ToTreeNode;
}
for (int i = 0; i <= this.Nodes.Length - 1; i++)
{
ToTreeNode.Nodes.Add(this.Nodes.ToTreeNode());
}
return ToTreeNode;
}
}
/// 載入TreeView
public static void LoadTreeViewData(TreeView treeView, string path)
{
try
{
BinaryFormatter ser = new BinaryFormatter();
Stream file = new FileStream(path,FileMode.Open,FileAccess.Read,FileShare.Read);
TreeViewData treeData = ((TreeViewData)(ser.Deserialize(file)));
treeData.PopulateTree(treeView);
file.Close();
}
catch
{}
}
/// 儲存TreeView到檔案
public static void SaveTreeViewData(TreeView treeView, string path)
{
try
{
BinaryFormatter ser = new BinaryFormatter();
Stream file = new FileStream(path,FileMode.Create);
ser.Serialize(file,new TreeViewData(treeView));
file.Close();
}
catch
{
}
}
}
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.