黑马程序员技术交流社区

标题: winform窗体之间的传值 [打印本页]

作者: 黄晓波    时间: 2013-4-26 11:07
标题: winform窗体之间的传值
本帖最后由 黄晓波 于 2013-4-26 17:18 编辑

winform窗体之间的传值问题:现有主窗体FormMain,子窗体FormSon,现在如何将主窗体FormMain中的某些值传递到子窗体FormSon中进行处理,处理完成之后的结果再返回给主窗体FormMain?
作者: 王德钊    时间: 2013-4-26 11:33
设置全局变量呗。
作者: 陈晖    时间: 2013-4-26 12:31
一种方法是在主窗体中new子窗体时将需要传递的值以参数的形式传给子窗体,
但是子窗体必须写一个接收参数的构造方法,
同时加out修饰参数就可以将结果返回给主窗体了;
另一种方法是将主窗体的引用this传给子窗体,
当然子窗体也必须写一个接收参数的构造方法,
子窗体中就可以控制主窗体的变量(变量必须是public修饰的)。
:)
作者: 胡化敏    时间: 2013-4-26 14:58
在子传递中声明一个方法设置主窗体要传入的参数,子窗体通过属性传值给主窗体。
主窗体代码片段
  FrmBjtx f = new FrmBjtx();
   f.Run("挂号报警温馨提示", ksmc, bjs, 15, false,ksdm);
   GlobalVariable.isFormActived[ksdm] = true;
窗体代码片段
/// <summary>
        ///  运行
        /// </summary>
        public  void Run(string title,string ksmc, int bjs, int zdgbsj,bool gb,string id)
        {
                     
            _ksmc = ksmc;
            _bjs = bjs;
            _zdgbsj=zdgbsj;
            _gb = gb;
            _title = title;
            _ksdm = id;
            this.Show();         
         
            //显示信息
            
        }

private void FrmBjtx_FormClosed(object sender, FormClosedEventArgs e)
        {
            GlobalVariable.isFormActived.Remove(_ksdm);
        }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2