有三个文件
主程序 form1.cs  
类2  opreate.cs   
类3  class3.cs主窗口form1中有一label控件,启动时要运行class3.cs中的方法,class3.cs处理过程中需调用operate.cs中的1方法,operate.cs最后使主窗口中的label值+1主要是我不想再每次操作过程中都把label控件先传给 class3中的方法,然后再传给operate.cs可以用委托还是事件的方式,希望帮解决啊!!感谢搞了一周多了,就这个问题。
winform

解决方案 »

  1.   

    反正是最后才改变label上的文字,所以你可以通过返回值来判断是否需要改变label上的文字比方说class3.cs的方法为public bool A(...)
    operate.cs的方法为public bool B(...)在Form1里
    if(class3.A())
       label1.Text=label1.Text+1; //这个你根据实际转数字再+1class3.cs里
    public bool A()
    {
       if(失败)
         return false;
       ...
       return B();
    }operate.cs里
    public bool B()
    {
      if(失败)
         return false;
       ...
      reurn true;
    }
      

  2.   

    那就在需要修改Label的类里加事件吧,Form里增加这个事件
      

  3.   

    opreate加一个构造
    from1 f;
    public opreate(form1 f)
    {this.f = f;}
    直接f.label1.text = ...;
      

  4.   

    一样的。你不传label。你每次都要设置委托。
    过程也没减少什么。
      

  5.   


    主要是后面opreate.cs要修改form1中的label值
      

  6.   

    我感觉这方法比较好,但我f点不出来label1呢,要怎么弄呢
      

  7.   

    在label1的属性中可见性级别改为public
      

  8.   

    在form1.Designer.cs label1的可见级别改为public,不过这个和传label1没啥区别。
      

  9.   

    主要是我不想再每次操作过程中都把label控件先传给 class3中的方法,然后再传给operate.cs==============
    如果你觉得把控件传来传去是个费力的活,那就担心错了,虽然控件有很多属性,但传来传去不涉及这些东西,只是把label实例的一个地址传递了一下而已,系统一点都不费力。如果是觉得耦合有问题,那到可以考虑不传递label,根据返回值在form1,而不是在operate里修改label。