有两个窗体
一个a,一个b
点周a窗体上的一个按钮,弹出b窗体,我在现在在b窗体上操作完成后,点击b窗体上的一个完成按钮后,关闭该页面,(a窗体始终没有关闭,是作为父窗体存在的。),这时我想让在b窗体里操作完成后的一个值在a窗体也就是父窗体里显示出来??怎么传呀?
在b/s里我可以刷新父页面。在winform里怎么做呀?谢谢
我想在上点击完成按钮时做完这两个操作,一个是关闭该窗体,另一个是传给父窗体哪个值,并显示出来

解决方案 »

  1.   

    http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
    http://blog.csdn.net/zhzuo/archive/2004/04/05/22028.aspx
    http://blog.csdn.net/zhzuo/archive/2004/04/05/22029.aspx
      

  2.   

    关闭用parent属性
    传值用
    1.static 
    2.属性
      

  3.   

    in winform b's close event, write code like blow:
    a.creategraphics().drawstring(b.somevar.tostring()......)
      

  4.   

    在b窗体中定义一个public属性,关闭b窗体的时候把你想要传的值赋值给属性
    在父窗体中用就好了
      

  5.   

    假设你要在a窗体中的Text1中显示b窗体中的值,那么你首先将a窗体中的Text1的属性窗口中的Modifiers的属性设为Public,然后在b窗体中对其赋值就可以了.如a.Text1.Text=str;
      

  6.   

    关闭应该可以用
    this.close();
    传值 用static  应该可以 ,或者是((父窗口)parent).property =''最近刚接触  可以看看
      

  7.   

    这简单,假设b窗体的一个string要在a窗体中的textbox中显示。你可以这样做:
    b窗体:
    ……
    public static string Value;
    ……
    b窗体的关闭按钮的事件:
    {
       a.textbox.text = Value;
       this.close();
    }
      

  8.   

    怎么搞的?
    我哪儿错啦?
    在form1里我设文件框的Modifiers的属性设为Public
    form1中打开:
    Form2 fr = new Form2();
    fr.ShowDialog();
    在form2中一个按钮事件里这么写的:
    sValue = "asdddddddddddddddd";
    Form1 abc = new Form1();
    abc.textBox1.Text = sValue;
    this.Close();
    这样是窗体关闭了
    但form1窗体中并没有显示哪个值呀?我在form1中有一个textBox1控件
    form2中有一个textBox11控件
    哪儿出错啦
      

  9.   

    老问题,查查,或看看,楼上的Blog
      

  10.   

    在子窗体中加入对父窗体的应用,并在父窗体中定义一个public的函数,在子窗体需要时调用父窗体的该函数即可。
    Form1:
    public void setTextValue(string sValue)
    {
    this.textBox1.Text = sValue;
    }private void button1_click(...)
    {
    Form2 fr = new Form2();
    fr .frmmain = this;
    fr.ShowDialog();
    }Form2:
    public Form1 frmmain;
    private void button2_click(...)
    {
    string sValue = "asdddddddddddddddd";
    frmmain.setTextValue(sValue);
    }
      

  11.   

    你可以用一个静态变量
    public class form1:Form
    {
       public static form1 frm;}
    static void main()
    {
       form1 a=new form1();
       form1.frm=fm;}
    在b 中调用a 时用form1.frm+属性
    用一个b 的关闭事件,在事件中
    form1.frm.Text="....";
      

  12.   

    TO
     lyvvvv(lyvvvv) ( 
    你说的方法在delphi里绝对可行
    但这儿我怎么试怎么不行
    真气晕我啦
      

  13.   

    将父窗体所需获得值的变量声明为静态的,如
    public static System.Windows.Forms.TextBox T_WebSite;子窗体关闭时的代码:
    Form1.T_WebSite.Text = "http://www.sohu.com";
    this.Close();不过文本框声明为静态后可能会在设计界面消失,但是调试时会出现在界面上的,不清楚为什么。。
      

  14.   

    定义属性加一个事件就行了,当关闭form2时调用这个事件,form1中设定这个事件的响应函数,函数里取form2的该属性,工作就完成了。
    当然,还有一个更好的方法,自定义一个传值的委托,再用这个委托定义事件,然后在form1的事件响应函数时就可以直接从参数里取值了。
      

  15.   

    Form1.T_WebSite.Text = "http://www.sohu.com";
    this.Close();   
    这样好像有问题,用VISIBLE可以的
      

  16.   

    我把form1中的窗体控件属性改为public
    在form2中定义一个
    private static FlowSetSe.form1 frm;
    这儿也有一个提示,说从末对字段FlowSetSe.form2的frm赋值,该值将一直保持为null
    在form2中的窗体控件关闭按钮事件中
    frm.txt_cn.Text = "33333333";
    出错
    提示末将对像设置到对像的实例??帮我看看出错在哪儿?
      

  17.   


    在主窗体中设个public static bool Repaint 变量,在弹出窗体中处理你要处理的操作,如果需要刷新主窗体,在它的Closing事件中将Repaint 设为true在主窗体的OnPaint()中判断 Repaint 是否为 true,如果为true,则执行主窗体的刷新,刷新后在把Repaint 设为false我原来这样做过,供你参考
      

  18.   

    是我没看懂你的问题还是什么?为什么大家都舍本逐末?回复人: fengcan(长风) ( ) 信誉:96  2005-05-10 18:51:00  得分: 0  
    定义属性加一个事件就行了,当关闭form2时调用这个事件,form1中设定这个事件的响应函数,函数里取form2的该属性,工作就完成了。
    当然,还有一个更好的方法,自定义一个传值的委托,再用这个委托定义事件,然后在form1的事件响应函数时就可以直接从参数里取值了。不行吗?用静态变量,还将父窗体赋给子窗体,逻辑都乱了。
      

  19.   

    在namespace上定义委托:
    public delegate void myMethodDelegate( string myString );form1:
    private void button1_Click(object sender, System.EventArgs e)
    {
    form2.close += new myMethodDelegate(form2_close);
    form2.ShowDialog();
    } private void form2_close(string myString)
    {
    te.Text = myString;
    }form2:
    private void button1_Click(object sender, System.EventArgs e)
    {
    if (close != null)
    {
    this.close(this.textBox1.Text);
    this.Close();
    }
    } public event myMethodDelegate close;如果不懂就留个email。我发给你,看是不是你要的。
      

  20.   

    楼上
    谢谢
    [email protected]
      

  21.   

    TO
    fengcan(长风) 
    我知道啦
    this.close(this.textBox1.Text);
    这个close
    一般的我一打个this.就出来哪个Close()啦
    所以一直出错
    谢谢呀