功能描述:
现有的窗体,Spgl.cs、Xfgl.cs、Hykgl.cs等等。当点击主窗体(Form1.cs)中的Treeview(动态绑定)中的相应节点时,弹出相应的窗体,而主窗体不关闭,弹出的窗体在主窗体之上。问:要实现上面所说的功能应该怎样编写事件,求思路(如果能给点代码就更好了,呵呵)。
顺便能不能解释下,使用node_click事件还是AfterSelect事件?两者有什么差别?
小弟不甚感激。
绑定TreeView的方法(怎样跟这个方法结合实现事件?):public void CreatTreeViewRecursive(TreeNodeCollection nodes, DataTable dt, string jsbm)
{
TreeNode node;
foreach (DataRow dr in dt.Rows)
{
if (!dr.IsNull(jsbm))
{
node = new TreeNode();
node.Text = (string)dr[jsbm];
node.Tag = (int)dr["ID"];
nodes.Add(node);
}
}
}
现有的窗体,Spgl.cs、Xfgl.cs、Hykgl.cs等等。当点击主窗体(Form1.cs)中的Treeview(动态绑定)中的相应节点时,弹出相应的窗体,而主窗体不关闭,弹出的窗体在主窗体之上。问:要实现上面所说的功能应该怎样编写事件,求思路(如果能给点代码就更好了,呵呵)。
顺便能不能解释下,使用node_click事件还是AfterSelect事件?两者有什么差别?
小弟不甚感激。
绑定TreeView的方法(怎样跟这个方法结合实现事件?):public void CreatTreeViewRecursive(TreeNodeCollection nodes, DataTable dt, string jsbm)
{
TreeNode node;
foreach (DataRow dr in dt.Rows)
{
if (!dr.IsNull(jsbm))
{
node = new TreeNode();
node.Text = (string)dr[jsbm];
node.Tag = (int)dr["ID"];
nodes.Add(node);
}
}
}
{
switch (Convert.ToInt32(((System.Windows.Forms.TreeView)(sender)).SelectedNode.Tag))
{
case 1:
{
Form1 _fr = new Form1();
if (_fr.ShowDialog(this) == DialogResult.OK)
{
}
}
break;
case 2:
{
Form2 _fr = new Form2();
if (_fr.ShowDialog(this) == DialogResult.OK)
{ }
}
break;
case 3:
{
Form3 _fr = new Form3();
if (_fr.ShowDialog(this) == DialogResult.OK)
{ }
}
break;
case 4:
{
Form4 _fr = new Form4();
if (_fr.ShowDialog(this) == DialogResult.OK)
{ }
}
break;
default: break;
}
}
2.(((System.Windows.Forms.TreeView)(sender)).SelectedNode//就是treeview对象中当前选择的节点
3.fr.ShowDialog(this) == DialogResult.OK是用于判断你新弹出的窗口关闭时有数据传回到父窗体,你总不会就只是弹出一个窗口就不管了吧
2. (((System.Windows.Forms.TreeView)(sender)).SelectedNode//就是treeview对象中当前选择的节点
3.fr.ShowDialog(this) == DialogResult.OK是用于判断你新弹出的窗口关闭时有数据传回到父窗体,你总不会就只是弹出一个窗口就不管了吧----------1,2 就是类型转换,3 判断是不是点击了ok的按钮。。
private void Form1_Load(object sender, System.EventArgs e)
{
tree.Nodes.Add("Form1");
tree.Nodes.Add("Form2");
tree.Nodes.Add("Test");
Panel1.Controls.Add(tree);
tree.Dock = DockStyle.Fill;
tree.AfterSelect += AfterSelect;
}
private void AfterSelect(object sender, TreeViewEventArgs e)
{
Panel2.Controls.Clear();
switch (e.Node.Text) {
case "Form1":
Form frm = new Form();
frm.Text = e.Node.Text;
frm.TopLevel = false;
Panel2.Controls.Add(frm);
frm.Show();
break;
default:
break;
}
}