父窗体form1中有个"打开子窗体from2"的按钮
按扭代码是:
Form2 ff2=new Form2();
ff2.show();在打开的子窗体form2中有“隐藏from1”,"显示from1",“改变from1的size”等等的按钮.
隐藏from1的代码我是这样写的但是不起效
Form1 f1=new Form1();
f1.Visible=false;请问这些按钮的代码怎样写才能控制到from1呀?

解决方案 »

  1.   

    你在Form2中new出来的Form1是一个新的窗体,并不是原来的父窗体
    最简单的办法是,你在form2中增加一个属性:
    private Form1 m_ParentForm
    public Form1 parentForm
    {
        get { return m_ParentForm; }
        set { m_ParentForm = value; }
    }原来的:
    Form2 ff2=new Form2();
    ff2.show();
    改为
    Form2 ff2=new Form2();
    ff2.ParentForm = this
    ff2.show();然后
    Form1 f1=new Form1();
    f1.Visible=false;
    可以改为:
    m_ParentForm.Visible=false;我记得Form类本身有个Parent之类的属性,好像可以直接得到父窗体,记不清了……
      

  2.   

    办法很多你可以在form2中定义属性,在Form1中new Form2的时候
    把这个属性设为Form1
    然后再Form2中操作这个属性就可以了你还可以在Form2 中定义委托
    发出一个事件
    在Form1中new Form2的时候
    订阅这个事件
      

  3.   

    谢俩位了
    lovefootball哥讲得还很专业的
    可能写些实例代码出来吗?
      

  4.   

    Form1的Form1_Load事件中添加代码
    private void Form1_Load(object sender, System.EventArgs e)
    { Form2 form = new Form2();
    form.Owner = this;
    form.Show();
    }FORM2中的控制
    private void btnShowForm_Click(object sender, System.EventArgs e)
    {
    this.ShowHideForm(true);
    } private void btnHideForm_Click(object sender, System.EventArgs e)
    {
    this.ShowHideForm(false);
    } private void ShowHideForm(bool show)
    {
    Form formTemp = this.Owner;
    if(show)
    {
    formTemp.Show();
    }
    else
    {
    formTemp.Hide();
    }
    } private void btnChangeFormSize_Click(object sender, System.EventArgs e)
    {
    Form formTemp = this.Owner;
    formTemp.Size = new Size(300,400);
    }已经测试通过,楼主可以试试
      

  5.   

    谢谢了可能呀!!!准备给分
    还想问一下
    我在from1中加载了个DLL怎样在from2中把它释放呀??
      

  6.   

    为什么不在form1中释放个人认为应该什么地方加载什么地方释放
    这样别人读你的代码比较容易懂
      

  7.   

    是引用了一个ocx的屏蔽控件public AxYFSHSysKeys.AxYFSysKey axYFSysKey1;是在from1声明的怎样在from2把他释放呀?
      

  8.   

    你ocx的实例在哪创建,用完后直接释放就行了,不知道你明白没有.