private static void RefleshState()
{
this.MyBtn.visible = false;
}请教
因为我把这个方法定义为静态的,是为了在其他的form里面可以直接调用,但是这个静态方法里面又不能用this.MyBtn这样的this引用请教我怎么样才能很方便的在其他form里面调用这个方法又可以用this.MyBtn???

解决方案 »

  1.   

    想用this,就必须是实例方法,因为static是在编译期间就确定的,this是运行时才能确定的
      

  2.   

                ActiveForm.Controls.Find("MyBtn", true)[0].Visible = false; 
      

  3.   


    private static void RefleshState(Button MyBtn)
    {
       MyBtn.visible = false;

      

  4.   

    this是访问实例变量,静态方法只能访问静态字段
      

  5.   

    在其他form里面调用这个方法,private改成public
      

  6.   

    这样肯定不能实现啊。不过有一个办法可以实现啊。你的功能是要把 MyBtn的可见属性改掉。那么写一个方法,传入button对象就可以了啊。就是6楼的写法就不写了。。
      

  7.   

    private static void RefleshState(Button MyBtn)
    {
       MyBtn.visible = false;

    这样貌似可以
      

  8.   

    将类对象的引用传进去就行了。这种方法在C++中经常用到。
    ClassName就是你的类名class ClassName
    {
       private static void RefleshState(ClassName this)
       {
           this.MyBtn.visible = false; 
       }
    }
      

  9.   

    调用时后只需要  RefleshState(this)就可以了,this就是我们用到的this。不知道我这样写你明白不?网络上非常著名的开发平台mfc  alt基本都是绑定this指针实现的thunk是非常著名的绑定方法。
      

  10.   

    仿照下面的理解下:public partial class AA: System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            sss(this);
        }
        protected  static void sss(AA this)
        {
            this.Button1.Text = "sss";
        }
    }
      

  11.   

    呵呵,这个其实写两个函数就行了.
    public static Myclass clone(Myclass class1)
    {
        Myclass m1 = new Myclass();
        .....
        return m1;
    }
    public Myclass clone()
    {
        return clone(this);
    }
    通常这种需要用到this的,和静态函数的参数不大一样.