1、有一个MDI主窗体,调用子窗体时有两种情况   第一种:
   FrmAbout frm=new FrmAbout();
   frm.ShowDialog(); //frm显示
   frm.Dispose();      //释放资源   当关闭FrmAbout里只需在窗体内执行Close()即可   第二种:
   FrmAbout frm=new FrmAbout();
   frm.MdiParent = this;
   frm.Show();   //frm显示   这时我平常用到的,对于窗体的调用和释放,各位有什么高见,我一直找不到一种调用的规范,如果有微软的标准就好了
2、父窗体调用子窗体时顺便给子窗体赋值怎么实现
   如子窗体上有个TextBox1控件,调用他的值就为"中华人民共和国",怎么做3、做winform开发时在登录后保留登陆用户名是不是用一个公用的静态变量存储4、父窗体和子窗体都显示时怎么控制布局,当将窗体大小任意拖拽时,大家怎么控制的
这都是开发winform的基础问题,请大家回答一下

解决方案 »

  1.   

    我也转winform没多久,我也遇到这几个问题,一般我的解决方法是:
    1.基本上调用窗体都是这么用,不过不用显式释放资源
    2.一般写一个公共方法或者在构造函数里加参数
    3.是的,专门有一个公共静态类,设置一些公共静态方法和变量。
    4.一般用一些panel等容器控件来做,实在不行自己写方法。
      

  2.   

    基本同意楼上的。
    不过lz的第二条没看懂,是要打开子窗体时将子窗体上的TextBox1的Text设置为"中华人民共和国"么?
    如果是这样的话,就用属性吧!!
      

  3.   

    针对第二点:
    在Form1中定义一个实例方法:
    public void ChanageTxet(string str)
    {
       this.txetBox.Text =str;
    }
    修改Form1调用Form2的代码为:
    Form2 f2=new Form2(this);
    f2.Show();
    修改Form2的构造函数为:
    Form1 f1;
    public Form2(Form1 f)
    {
       InitializeComponent();
       f1=f;
    }
    修改Form2中的button1_Click事件为:
    string str="你想要设置的值";
    f1.ChanageTxet(str);这样就不需要用到委托也可以改变Form1的txetBox的值。上面是在Form2设置Form1的控件的值,同样道理,你也可以在Form2获取Form1的控件的值:
    在Form1中定义一个实例方法:
    public string GetTxet()
    {
       return this.txetBox.Text;
    }修改Form2中的button1_Click事件为
    MessageBox.show(f1.GetText());
    如果对你有帮助,请记得给分哦