请问MDI子窗体如何传值给主窗体

问题描述

目前在MDI主窗体Form1内设置了get和set属性访问器子窗体FrmLogin是通过菜单控件show出来的FrmLoginfrm=newFrmLogin();frm.MdiParent=this;frm.show();现在的问题是我子窗体FrmLogin通过验证后有两个值要传给主窗体Form1该如何写!谢谢!!目前我在窗体是这样写的。。//验证用户的代码Form1f=newForm1;f.Quanxian=Covert.ToInt32(quanxian);f.gonghao=Covert.ToInt32(gonghao);这样传过去那里拿不到!是不是因为我new了一个新的form1的原因?谢谢!!!!!

解决方案

解决方案二:
Form1f=newForm1;f.Quanxian=Covert.ToInt32(quanxian);f.gonghao=Covert.ToInt32(gonghao);quanxian和gonghao是什么东西
解决方案三:
是两个标志变量!用来判断权限和显示工号的!!这个两个变量是通过用户登入后得到的信息我前面忘记写this.了!!!
解决方案四:
((Form1)frm.MdiParent).Quanxian

解决方案五:
((Form1)f.MdiParent).Quanxian=Covert.ToInt32(quanxian);((Form1)f.MdiParent).gonghao=Covert.ToInt32(gonghao);

解决方案六:
new当然拿不到了,因为是另一个对象直接从FrmLogin的MdiParent里面拿就可以了
解决方案七:
简单一点的话。。。你可以在子窗体里多做一个构造函数。。。传个主窗体进去就好了~~privateFormFatherMyForm;publicFormChild(FormFatherf){InitializeComponent();MyForm=f;}
解决方案八:
引用4楼jinjazz的回复:

C#code((Form1)f.MdiParent).Quanxian=Covert.ToInt32(quanxian);((Form1)f.MdiParent).gonghao=Covert.ToInt32(gonghao);

解决方案九:
在子窗体中在做一个带参的构造函数Form1f=newForm1;f.Quanxian=Covert.ToInt32(quanxian);f.gonghao=Covert.ToInt32(gonghao);这段该如何写?另外((Form1)f.MdiParent).Quanxian=Covert.ToInt32(quanxian);((Form1)f.MdiParent).gonghao=Covert.ToInt32(gonghao);这两个方法报错说我未将对象引用??
解决方案十:
classform2{privatestringm_Para="";publicstringPara{get{returnm_Para;}}...}------------------------------form2f=newform2();if(f.ShowDialog()==DialogResult.OK){this.textBox1.Text=f.Para;}
解决方案十一:
请问((Form1)f.MdiParent).Quanxian=Covert.ToInt32(quanxian);((Form1)f.MdiParent).gonghao=Covert.ToInt32(gonghao);这个也是要new对象的,是什么原理,能解释一下吗?谢谢!!
解决方案十二:
这个不new对象..只是f.MdiParent已经指向了本来的Form1
解决方案十三:
引用6楼HDNGO的回复:

简单一点的话。。。你可以在子窗体里多做一个构造函数。。。传个主窗体进去就好了~~privateFormFatherMyForm;publicFormChild(FormFatherf){InitializeComponent();MyForm=f;}

我一般用这个
解决方案十四:
那((Form1)f.MdiParent).Quanxian=Covert.ToInt32(quanxian);这里的f是什么东西啊???
解决方案十五:
引用楼主wzgccm的帖子:

目前在MDI主窗体Form1内设置了get和set属性访问器  子窗体FrmLogin是通过菜单控件show出来的FrmLoginfrm=newFrmLogin();frm.MdiParent=this;frm.show();现在的问题是我子窗体FrmLogin通过验证后有两个值要传给主窗体Form1该如何写!谢谢!!目前我在窗体是这样写的。。//验证用户的代码Form1f=newForm1;f.Quanxian=Covert.ToInt32(quanxian);f.gonghao=Covert.ToInt32(gongh…

你还问f是什么意思?
解决方案:
sorry,看错了应该是((Form1)this.MdiParent).Quanxian=Covert.ToInt32(quanxian);
解决方案:
哈哈!!没问题了!!请问((Form1)this.MdiParent)这样写就代表Form1.Quanxian=Covert.ToInt32(quanxian);不需要new一个新的form1对吗?(Form1)这个个引用的意思吗??能给我解释一下吗?效果是达到了但是没有搞明白里面的意思!麻烦你了!!
解决方案:
1.在newForm时候用构造函数2.用CallContext

时间: 2024-08-28 23:18:34

请问MDI子窗体如何传值给主窗体的相关文章

access数据库-子窗体记录在主窗体中同步(主窗体有文本框、组合框)

问题描述 子窗体记录在主窗体中同步(主窗体有文本框.组合框) 主窗体和子窗体为同一张数据表,实质就是在子窗体中点击任一条记录,主窗体中相应的文本框或组合框中能同步出现对应记录,便于编辑.本人刚接触ACCESS,请多指教,能给出相应参考代码更好!(用到的函数.事件过程及属性设置)

急:请教C#2005中用DLL封装MDI子窗体的方法以及主窗体是如何调用?

问题描述 我的主窗体是单独的一个exe,MDI子窗体是在DLL中封装的,每个DLL都封装有三个子窗体(每次这三个子窗体都可以同时打开,相互访问其中方法的),目前我在EXE中的主窗体中定义了三个公用的窗体,在用反射创建(CreateInstance)这三个form窗体实例,在每个子窗体中的构造的函数中定义了主窗体的实例,本来是想着这样就可以互相访问之间的函数,结果由于在主窗体中定义的三个公用窗体并不知道每个子窗体的类型,这样都只是开始定义的form类了,就并不能访问每个子窗体中的方法了,只是访问主

即使把主窗体控件modifiers属性改为protected C#中子窗体依然无法调用主窗体控件 要怎么解决啊?急求答案 以下是代码。

问题描述 stringselectsql="select*from用户权限wheresysuser='"+username+"'andpassword='"+password+"'";SqlCommandcmd=newSqlCommand(selectsql,LinkDataBase.Connection);cmd.CommandType=CommandType.Text;SqlDataReadersdr;sdr=cmd.ExecuteReade

各位C# 大神看过来,急!!,怎样让弹出窗体总在程序主窗体的最前面,而又不是顶级窗体。也就是该弹出窗体只是主程序的顶级窗体。当切换任务的时候,该窗体不显示出来。

问题描述 如题...bringtofornt不行,我切换到其他软件的时候,该弹出窗体还是一直在前面::先谢过 解决方案 解决方案二:privatevoidbutton1_Click(objectsender,EventArgse){Form2f2=newForm2();f2.Show(this);}解决方案三:Form..::.Show方法(IWin32Window)发送反馈向用户显示具有指定所有者的窗体.命名空间:System.Windows.Forms程序集:System.Windows.F

c#-WeifenLuo.WinFormsUI.Docking控件子窗体与子窗体怎么传值

问题描述 WeifenLuo.WinFormsUI.Docking控件子窗体与子窗体怎么传值 我主窗体使用WeifenLuo.WinFormsUI.Docking控件的 现在我想实现 点击子窗体(frm2)上的一个按钮把条件值传递给 另一个子窗体间(frm3 数据加载窗体)上,改变frm3上的数据. 解决方案 通过数据模型来传值,

c#mdi子窗体

问题描述 怎样让mdi子窗体启动时充满主窗体? 解决方案 解决方案二:childWindows.location.x=0;childWindows.location.y=0;childWindows.width=parentWindows.width;childWindows.height=parentWindows.height;解决方案三:Mdi窗体的WindowsState属性设置Maximized解决方案四:同意heyafeng实际上在MDI窗体中,子窗体应该比父窗体小,而不是一样的大小

如何让MDI子窗体最大化时隐藏子窗体?

问题描述 要实现这个功能:当子窗体最大化时隐藏MDI主窗体,我现在的情况是,如果直接hide主窗体,子窗体会一起被隐藏掉,如果设置子窗体的mdiparent为null会引发其他问题,所以不可取,有没有其他的最简单方法?PS:如果是隐藏其他子窗体的方法就请不用说了,代码量太大,且占用资源不划算 解决方案 解决方案二:不好意思,标题有误,应该是:如何让MDI子窗体最大化时隐藏主窗体.解决方案三:child.Show();this.Hide();解决方案四:主窗体实例化对象.Hide();子窗体实例化

MDI子窗体最大化 的问题 望指教 在线等

问题描述 我在MDI子窗体最大化的时候,子窗体的标题,以及最大关闭按钮占了一行,而主窗体的菜单栏下移了一行.我要实现的就是子窗体的标题,主窗体的菜单,最大关闭按钮都在同一行,我看过类似的软件,但是就是不知道怎么实现?望各位指教.

C#如何多线程创建MDI子窗体

问题描述 我做的东西其实就是类似多标签浏览器那样,每个子窗体都有个axWebbrowser控件,子窗体打开后就自动填表提交,如果不用多线程打开窗体,当同时打开多个子窗体的时候,主窗体的操作就会卡住.我现在用下面的代码可以用多线程打开个子窗体,但是这个子窗体不是主窗体的MDI子窗体,这不是我想要的.我就是在新线程的委托里写frmMdiChild.MdiParent=this;报错,说"线程间操作无效:从不是创建控件""的线程访问它.".麻烦各位大侠帮忙看看,如果分不够