把参数从A->B应该很简单(直接调用B的方法,或者在实例化B是传入参数),但是回传比较麻烦,一个方法是使用静态参数,还有一种是申明一个引用,再有就是如果仅仅是对A传回参数,就可以在B关闭是调用A的方法把参数传回去!

解决方案 »

  1.   

    关闭对话框的方式或其“结果”可在设计时或运行时设置:在设计时,可设置对话框上所有 Button 控件的 DialogResult 属性。在运行时设置 DialogResult 属性让您可以动态处理用户响应。在设计时设置控件的 DialogResult 属性 单击要为其设置属性的 Button 控件。 
    在“属性”窗口中选择 DialogResult 属性,然后打开可用属性设置列表。 
    选择适当的对话框结果。 
    ,可为用户执行的、除单击 Button 控件以外的其他操作设置对话框结果。如果对话框不包含关闭该对话框的按钮,可在运行时设置该对话框的结果。以编程方式设置控件或窗体的 DialogResult 属性 定位到要为其设置 DialogResult 属性的事件处理程序或方法。 
    键入类似下列的代码: // C#
    private void InformationProcessed() 
    {
       // This code will set the DialogResult for a form.
       DialogResult = DialogResult.Yes;
       // OR
       // This code will set the DialogResult for a button.
       button1.DialogResult = DialogResult.No;
    }
    虽然设置 DialogResult 属性将引起对话框自动关闭,但仍然可处理控件的 Click 事件,而且对话框在事件处理程序的代码完成后立即关闭。在处理 Click 事件时,可能需要暂停对话框的关闭。阻止 DialogResult 属性关闭对话框 在事件处理程序中,键入类似于下列的代码: // C#
    private void button1_Click(object sender, System.EventArgs e) 
    {
       DialogResult = DialogResult.None;
    }
    注意 您还可以使用窗体的 Closing 事件来停止对话框的关闭。
      

  2.   

    续前,
    在窗体B中创建属性
    private string my_x;                 
    public string X
    {
        get
        {
    return my_x;
        }
        set
        {
    my_x=value;
        }
    }
    并在A窗口如下调用
    FormA fp=new FormA();
    fp.x="ok";
    fp.ShowDialog(this);
    if(fp.DialogResult==DialogResult.OK)
    {
        Console.WriteLine(fp.x);
    }
    如此就可以了。