各位前辈:    我在主窗体frm_main 中有个方法叫private void treeView1_AfterSelect(object sender, TreeViewEventArgs e){}
   我想在frm1窗体的private void CMD_OK_Click(object sender, EventArgs e)事件中调用主窗体的treeView1_AfterSelect,用委托怎么写呢?

解决方案 »

  1.   

    主窗体中的代码,其中有一个按钮,用来打开另一个窗口的        private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                f.clickEvent += new Form1.clickEventHandler(f_clickEvent);   
            }        void f_clickEvent(object sender, System.Windows.Forms.TreeViewEventArgs e)
            {
                MessageBox.Show("test");
            }
            Form1 f = new Form1();
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                
                f.Show();
            }
    新产生的窗口里面的代码,即frm1 中代码        private void button1_Click(object sender, EventArgs e)
            {
                if (clickEvent!= null)
                {
                    TreeNode node = new TreeNode();
                    clickEvent(this, new TreeViewEventArgs(node));
                }
            }        public delegate void clickEventHandler(object sender, TreeViewEventArgs e);        public event clickEventHandler clickEvent = null;
      

  2.   

    貌似。你这里用事件更合理一些。在主窗体frm_main 中,
    把form1的事件clickEvent 注册给你要的方法。
    里面去调用treeView1_AfterSelect
      

  3.   

    主窗体frm_main
    public delegate void treeviewdelegate(object sender ,TreeViewEventArgs e );public treeviewdelegate  tvd ; //添加委托.
    tvd =new treeviewdelegate (this.treeView1_AfterSelect); //这个要记得初始化tvd,可以直接加到构造函数里 ;form1  中private frm_main  f1 ;
    public form1 (frm_main f )
    {
    this.f1 = f ;
    }
    private void CMD_OK_Click(object sender, EventArgs e)
    {
      TreeNode node = new  TreeNode();
      f1.tvd(this,new TreeViewEventArgs(node)); //这里调用,这样就可以了.
    }