如何对已经打开的子窗体通过方法赋值
环境:c#2008+XP Professional
前提:主窗体(MDIFrm)中通过菜单栏打开子窗体,通过工具栏控制子窗体的动作
主窗体中:通过MC_Employee的MC_Employee_Click事件打开子窗体,
Frm_Employee newFrm = new Frm_Employee(this,"1");
newFrm.MdiParent = this;
newFrm.WindowState =FormWindowState.Maximized;
newFrm.Show(); //出现子窗体
打开后,通过工具栏中的ButtonAdd的ButtonAdd_Click事件执行子窗体的添加动作。这个分几步走:
(1)。得到当前的活动子窗体
(2)。得到系统点击的按钮的功能,比如是添加功能,或者是修改功能等。
private void gs_toolBarbutton(string str_ButtName)
{
string str_ActiveFrm = this.ActiveMdiChild.Name; //获得当前活动窗口名称
switch (str_ActiveFrm)
{
case "Frm_Employee":
Frm_Employee frmE = new Frm_Employee(this,str_ButtName);
frmE.gs_Control(this,str_ButtName);
case "....."
(3)。进入子窗体的处理程序gs_Control
public virtual void gs_Control(MainMDI from,string strControl)
{
switch (strControl)
{
case "A": //添加
s_AddRecord(); //___________________1
break;
case "E": //修改
s_EditRecord();
break;
case "....":
(4)。进入子窗体的相对应的方法处理子过程
private void s_AddRecord()
{
//string M_strID = "";
UserDf.Create_ID("select max(AutoID)as ID from AC_Employees", "AC_Employees", Txtform);
//Txt_Name.Text = "OKOKOOK";
}
这里就出现问题了,这个方法无法对子窗体上的文本框赋值,就是直接赋值Txt_Name.Text = "OKOKOOK"也不能
程序是运行到这里是了,监视也表明是赋值了,但子窗体上的文本框就是空的,不是前景色背景色的原因。
但是我如果直接在page_Load里面调用s_AddRecord();是可以赋值的。
我也测试了如果在点击按钮的时候再跳出来这个界面,也能赋值,但现在已有的界面不会关闭,也没有赋值。
请大家帮我关闭原来的界面或者是能让我在方法里赋值都可以,最好是后者。
请达人帮忙说明一下,给出解决方案,不胜致谢。
------解决方案--------------------参考:
1.Refresh()下是否可以,
2.另开一个线程给文本框赋值(这个肯定可以)
------解决方案--------------------子窗体创建一个属性,通过赋值,把string当参数传递给子窗体的text
------解决方案--------------------
newFrm是你已经show出来的子窗体了,
你在第(2)步中就不应该在new一个新的子窗体了,
Frm_Employee frmE = new Frm_Employee(this,str_ButtName);
改为下面的再试试
Frm_Employee frmE = (Frm_Employee)this.ActiveMdiChild;