有一个主窗体:MainForm,上面有一个Name为btnShow的按钮和Name为lbInfo的Label控件,它的Text为“Hello”。单击btnShow就会弹出子窗体ChildForm,且ChildForm以非模态对话框的形式弹出(即chdForm.Show()),子窗体上有一个名为txtInfo的TextBox控件。
现在我需要完成这个功能:点击子窗体中的txtInfo控件,即获取焦点,然后点击主窗体的lbInfo控件,此时该lbInfo的Text的值就会赋值给txtInfo控件的Text属性。请问各位高手应该怎么实现?

解决方案 »

  1.   

    子窗口有一个ParentForm的属性可以得到父窗口
    然后通过Controls遍历找到窗口里面的你需要操作的控件,就可以操作这个控件了
      

  2.   

    你要在  txtInfo控件和 lbInfo控件加载(+=) 鼠标按下事件 在 父窗体里定义一个属性(lbtext) 在鼠标按下事件里把lbInfo的text赋给 这个属性变量(lbtext)。在子窗体里 MainForm mf = new MainForm();获得mf里的属性变量(mf.lbtext) 。在textInfo的鼠标按下事件里把mf.lbtext赋给textInfo.text。
      

  3.   

    你在子窗体下要掉用父窗体的事件里写如下类似的代码: 
    string myText =((Button)(ParentForm.Controls["button1"])).Text 
    这样就可以获取父窗体的值,你试试
      

  4.   

    比较简单的方法是 -- ChildForm 中定义 public static string ContentInfo;-- txtInfo 的 GotFocus 事件中 ContentInfo = txtInfo;-- 最后、在 MainForm 的 lbInfo Click 事件中加入
    if(ChildForm.ContentInfo != "") lbInfo.Text = ChildForm.ContentInfo提示:关闭 ChildForm 时,可根据需要判断是否清空 ContentInfo 的值
      

  5.   

    ParentForm 属性 就是父窗体之后强制转换类型为 父窗体类型 就行了
      

  6.   

    有2个窗体,Form1和Form2,Form1是主运行窗体。
    需要在Form2关闭的时候,释放Form2的资源。
    要求Form1还是运行的。
    如下代码:
            private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                System.Environment.Exit(System.Environment.ExitCode);//或者是Application.Exit();
                this.Dispose();
                this.Close();
            }
    但是这样子每次会把Form1这个主窗体都关闭掉。

    欸,没分发帖,求解决方法。
      

  7.   

    有2个窗体,Form1和Form2,Form1是主运行窗体。
    需要在Form2关闭的时候,释放Form2的资源。
    要求Form1还是运行的。
    如下代码:
            private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                System.Environment.Exit(System.Environment.ExitCode);//或者是Application.Exit();
                this.Dispose();
                this.Close();
            }
    但是这样子每次会把Form1这个主窗体都关闭掉。
    欸,没分发帖,求解决方法。
      

  8.   


    好像弄反了吧。。假如我子窗体ChildForm中含有两个TextBox控件,名分别为:txtBox1,txtBox2,我先让txtBox2获取焦点,然后点击主窗体的lbInfo控件,此时lbInfo的Text就会赋值到txtBox2中,我想通过计算机来自动判断我在子窗体中是哪个控件获取焦点,然后再决定将lbInfo的Text赋值给哪个控件,刚才的例子就是计算机知道txtBox2获取焦点了,所以将lbInfo的Text就会赋值到txtBox2中。
      

  9.   

    老大,我懒了点嘛,少打了个属性! @_@
    ContentInfo = txtInfo.Text;
      

  10.   


    大哥,你在好好看一下我的描述,你的思路好像是反的。。我希望点击主窗体的lbInfo时,将lbInfo的Text赋值给子窗体的之前获取焦点的TextBox控件中,即是赋值给txtBox2,而不是点击lbInfo则把txtBox2的Text赋值给lbInfo的Text
      

  11.   

    是C/S的啊,B/S的可以帮忙,C/S没怎么做过,其实百度一下就可以
      

  12.   

    明白了,汗!// 父窗口调用
    // ChildForm f = new ChildForm(lbInfo);
    // f.Show();public ChildForm(Label label)
    {
    label.MouseClick += (sender, e) =>
    {
    // 单个 textBox 设置
    if (this.textBox1.Focused)
    {
    this.textBox1.Text = label.Text;
    } // 多个 textBox 处理
    foreach (Control ctrl in this.Controls)
    {
    if (ctrl.GetType() == typeof(TextBox))
    {
    TextBox edit = ctrl as TextBox;
    if (edit.Focused)
    {
    edit.Text = label.Text;
    break; 
    }
    }
    }
    };
    }