winform1中有一个addnewnode()这个方法,我想在winform2中去调用该方法,使winform1的数据刷新,可是不知道怎么调用啊???

解决方案 »

  1.   

    public class winform2 : winform1//System.Web.UI.Page
    {
    }
      

  2.   

    winform1 f1= xxxxxx......
    f1.addnewnode(...)
      

  3.   

    将addnewnode()方法设为Public 
    将Form1的实例frm传给Form2
    在Form2中调用frm.addnewnode()即可
      

  4.   

    winform1中有一个treeview,winform2是添加节点的form,当winform2添加节点到数据库成功后,得调用winform1中的一个方法addnewnode()去刷新treeview,,,,,,,,public class winform1 : System.Windows.Forms.Form
    {
    ......................
    ......................   public void addnewnode()
        {
          ..........//刷新treeview的代码
         }}
    public class winform2 : System.Windows.Forms.Form
    {
    ...................
    ...................   private void btOK_Click(object sender, System.EventArgs e)
        {
          ..........//添加到数据库
          ..........//调用winform1中的addnewnode(),刷新winform1中的treeview(这应该怎么写???)
          MessageBox("add new node OK");
          }}
      

  5.   

    设为public static后,在addnewnode中就不能调用treeview.XXX了?????
      

  6.   

    1、使用接口:
    interface IForm
    {
    public virtual void addnewnode();
    }
    让winform1继承IForm,并实现addnewnode()方法。winform2添加IForm接口
    class winForm2 : System.Windows.Forms.Form
    {
       private IForm _f;
       public winForm2(IForm f)
       {
           InitializeComponent();
           _f = f;
       }
       //调用addnewnode
       private void Invokeaddnewnode()
       {
          _f.addnewnode();
       }
    }
      

  7.   

    如果,想实现以上的功能,不用在winform1中做方法,,,采用封装类,或者什么方式比较好????,能否给个例子????E-MAIL:[email protected]
      

  8.   

    我弄明白了,
    1.用winform1 f1=new winform1();f1.addnewnode();是不可行的.
    2.应该用委托
    public class winform1 : System.Windows.Forms.Form
    {
    ......................
    ......................   public void addnewnode()
        {
          ..........//刷新treeview的代码
         }
       private void btAddnode_Click(object sender, System.EventArgs e)
        {
            winform2 f2=new winform2(this)
        }}
    public class winform2 : System.Windows.Forms.Form
    {
    ...................
    ...................
       private winform1 _wf1;
       public winform2(winform1 wf1)
       {
         _wf1=wf1;
       }
       private void btOK_Click(object sender, System.EventArgs e)
        {
          ..........//添加到数据库
          _wf1.addnewnode();//调用winform1中的addnewnode(),刷新winform1中的treeview(
          MessageBox("add new node OK");
          }}这样调试通过了,不过,感觉是不是有什么更好的方法去实现啊????有什么更好的方法请指教????
      

  9.   

    里面有几种实现的方式,
    http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
    http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx
      

  10.   

    怎么也没看出LS的LS用了委托...不就是示例了一个winform1吗