日期:2014-05-18  浏览次数:20852 次

两个form间调用控件的问题
我在form1中放置了一个容器控件,容器里面放置了两个treeview控件,我在form2中给combox不同的条件要求显示相对应的treeview控件.首先我满足条件==0之后触发buttonclick时间,然后再form2的combox中使其满足==1条件,这时treeview2实例化报"未将对象引用设置到对象的实例"这个错误。开始以为是treeview1实例化的影响,后来通过if (treeviewBrick != null)
  treeviewBrick.Dispose();取消实例化仍然报错"未将对象引用设置到对象的实例"。请问什么原因?
这个是form2buttonclick事件中的一段代码.
C# code
if (comboBox_BridgeStyle.SelectedIndex == 0)
            {
                TreeView treeview1 = (TreeView)Application.OpenForms["Form1"].Controls["navBarControl1"].Controls["navBarGroupControlContainer2"].Controls["treeView1"];
                treeviewBrick.Visible = true;
                
            }
            else if (comboBox_BridgeStyle.SelectedIndex == 1)
            {
                TreeView treeview2 = (TreeView)Application.OpenForms["Form1"].Controls["navBarControl1"].Controls["navBarGroupControlContainer2"].Controls["treeView2"];
                treeviewRC.Visible = true;


------解决方案--------------------
form2 应该实例化form1之后才能调用form1的控件.如果两者需要互相实例化,会出现无限递归错误,这时候就需要改写FORM的构造函数.
------解决方案--------------------
楼主说的有点乱。。
不看了。。呵呵,一般在一个form里如果要调用别个form的控件就要先实例化出来一个对象form。。。然后就随便了。。
补充一点,被调用控件的Modifiers属性要设为Public
------解决方案--------------------
Form间调用控件的问题请LZ参考这里,
http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx