同一命名空间SharpPlatform.GeDemo中的两个类GEViewContent、GEToolPad,要从GEViewContent类的方法中修改GEToolPad的控件资源信息。
     GEToolPad toolPad = new GEToolPad();
     toolPad.button1.Text = "test";
     请为什么这样的操作无效?
     
     但如果从GEViewContent类的方法中修改GEToolPad的公共域(变量)资源是可以的。     P.S: GEViewContent类是个c#类,不是程序入口点,GEToolPad是个窗体类)
     
     在线等,谢谢了,

解决方案 »

  1. 你需要操作的对象是不是你自己new出来的那一个,应该找到你需要操作对象的引用,而不是自己new一个出来。当然,如果你要修改static的变量的确是可以,但是明显textbox不可能是static的。
      

  2. 你是不是GEToolPad这个窗体已经显示之后,再用那两条语句来修改Button1的Text属性?其实你用GEToolPad toolPad = new GEToolPad(); 来新建这个对象,虽然他们的名字是一样,但是已经是不同的对象了,也就是说你新建了另外一个对象了,那你用toolPad.button1.Text = "test"; 是改不了已经实例化的那个GEToolPad对象的。
      

  3. To lunasea0_0:
      GEToolPad窗体中的控件在程序启动时已经初始化过,请问我应该在GEViewContent类中获取GEViewContent对象的引用?
     
      

  4. 1. form下添加的所有控件被自动声明成Private 
    2. 各个form并没有自动生成Global引用 所以,解决这个问题的方法是: 
    1. 生成Global引用,例如:public static class MyForms{public static gForm1: Form1;public static gForm2:Form2}; 然后在创建Form2/Form3实例的InitializeComponents方法中添加:Myforms.gForm2/3=this; 
    然后,你就可以使用form2/3的实例了。 
    2. Form上的控件,要么你将自动声明改成Public;要么就是用Form.Controls.Find(ControlName,bool)[] 
      

  5. 这个问题其实就是窗体或对象实例间的数据交互和访问,
    我写了两篇文章。楼主看了应该不会再有问题。
    Windows窗体间的数据交互谈基于.net平台windows开发中的模式窗体
      

类似问题 »