当前位置:编程学习 > C#/ASP.NET >>

C# 子窗口有一个treeview传值问题


C# 子窗口有一个treeview,主窗口有一个dataGridView2,点击子窗口的树节点,就把节点的一个字段传到主窗口里的dataGridView呢, 
子窗口的代码已写,
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;

namespace test2
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
        //定义数据集,将树信息放入DataTable中
        DataSet ds = new DataSet();
        //树节点是否完全展开
        private bool isexpand = false;
        //选中的节点的id
        private int nodeid = -1;
        private TreeNode lastnode;
        //定义数据库的连接字符串
        //  private string connstr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=db.mdb;";
        private string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb";

        private void Form3_Load(object sender, EventArgs e)
        {
            tv_bind();
        }
        private void tv_bind()
        {
            try
            {
                //从数据库中读取分类信息至DataSet
                //绑定前先清空数据集
                ds.Clear();
                treeView1.Nodes.Clear();
                using (OleDbConnection conn = new OleDbConnection(connstr))
                {
                    using (OleDbDataAdapter da = new OleDbDataAdapter("select * from tree", conn))
                    {
                        da.Fill(ds, "tree");
                    }
                }
                //如果数据库中有信息那么构造树,否则提示无接点
                if (ds.Tables["tree"].Rows.Count > 0)
                {
                    //清除树节点,从根添加树
                    treeView1.Nodes.Clear();
                    Add_tree(0, (TreeNode)null);
                }
                else
                {
                    treeView1.Nodes.Clear();
                    TreeNode node = new TreeNode();
                    node.Text = "暂无任何分类信息";
                    treeView1.Nodes.Add(node);
                }
            }
            catch
            {
                treeView1.Nodes.Clear();
                TreeNode node = new TreeNode();
                node.Text = "暂无任何分类信息:请检查数据库连接是否正常";
                treeView1.Nodes.Add(node);
            }

        }

        //递归树
        private void Add_tree(int pid, TreeNode pnode)
        {
            DataRow[] dr = ds.Tables["tree"].Select("pid=" + pid);
            foreach (DataRow row in dr)
            {
                TreeNode node = new TreeNode();
                if (pnode == null)
                {
                    node.Text = row["nodename"].ToString();
                    node.Tag = row["id"].ToString();
                    treeView1.Nodes.Add(node);
                    Add_tree(int.Parse(row["id"].ToString()), node);
                }
                else
                {
                    node.Text = row["nodename"].ToString();
                    node.Tag = row["id"].ToString();
                    pnode.Nodes.Add(node);
                    Add_tree(int.Parse(row["id"].ToString()), node);
                }
            }
        }

        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
                        }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            

        }
    }
} --------------------编程问答-------------------- Form3中增加

Form mainfrm;//用来保存主窗体对象
public Form3(Form frm) //带参构造
{
 InitializeComponent();
 this.mainfrm = frm;
}

主窗体中创建 Form3时
Form3 frm = new Form3(this);

接下来就可以通过mainfrm访问主窗体了,最简单的,将主窗体的控件的modifers属性设置为public,这样可以通过mainfrm.datagridview1来访问了 --------------------编程问答-------------------- 在主窗口定义一个公共属性,打开子窗口时
var f = new Form3();
f.Show(this);
在 treeView1_NodeMouseClick 中
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    主窗体 f = (主窗体)this.Owner;
    f.属性 = ......; 
}
在属性 set 访问器中定义处理传过来数据的代码 --------------------编程问答-------------------- 能不能写详细点呢?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,