从另一个winform获取值并将其传递给当前!

时间:2010-12-31 16:39:23

标签: c# winforms

我有2个窗体。第一个在程序启动期间处于活动状态的按钮有一个按钮,其中显示另一个第二个窗体,其中有一个文本字段,用户在其中键入其名称并且HIT正常。

现在在第一种形式中,我有一个变量名:nameproccessed,它取自第二种形式的名称。但问题是我的按钮在第一种形式除了取名之外还有更多的功能,如何阻止编译器的流程从第二种形式取名第一,然后处理函数的其余执行??? / p>

以下是我的代码片段:

//1st form
//Class1
 public string _nameProcessed = "";



private void btnGetSomething_Click(object sender, EventArgs e)
    {
          if (!showdial())
            return;
            string name = _nameProcessed;
         //some more functionalities in this function!!!
         //This PART is NOT executing....

     }



       private bool showdial()
    {
        InputName inm = new InputName();
        if (inm.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            return false;
        _nameProcessed = inm.name;

        return true;
    }

//2nd form
//Class2
public string name;

 private void btnCancel_Click(object sender, EventArgs e)
    {
        //MessageBox.Show("Please Enter Your Code! ");
        this.Close();
    }

    private void btnOkay_Click(object sender, EventArgs e)
    {
        //string name;
        name = tbxName.Text;
        Form1 ict = new Form1();

        if (name == "")
        {
            MessageBox.Show("Please Enter Your Name!");
            this.DialogResult = System.Windows.Forms.DialogResult.No;

        }
        else
        {
        ict._nameProcessed = name;
        this.Close();
        }

    }

现在我想从第二个表单中取出'name',将它放在第一个表单的_nameprocessed上,然后执行函数的其余部分。我怎样才能做到这一点?任何帮助!

2 个答案:

答案 0 :(得分:5)

使用ShowDialog而不是Show。

inm.ShowDialog();

将停止Form1代码,直到Form2关闭。 表单关闭后,您可以从中读取名称变量。

_nameProcessed = inm.name;

最终的代码是:

private void showdial()
{
  InputName inm = new InputName();
  inm.ShowDialog();
  _nameProcessed = inm.name;

}

编辑第二个问题: 按钮有一个名为“DialogResult”的属性。将“确定”按钮设置为“确定”,将“取消”按钮设置为“取消”。 在代码上你只需要一个小的IF和更改函数来返回一个bool:

private bool showdial()
{
  InputName inm = new InputName();
  if (inm.ShowDialog() != System.Windows.Forms.DialogResult.OK)
      return false;
  _nameProcessed = inm.name;

  return true;
}

然后点击按钮

private void btnGetSomething_Click(object sender, EventArgs e)
{
     if(!showdial())
         return;
     //some more functionalities in this function!!!
 }

编辑2 - 添加此行'this.Close()':

this.DialogResult = System.Windows.Forms.DialogResult.OK;

制作最终代码:

private void btnOkay_Click(object sender, EventArgs e)
{
    //string name;
    name = tbxName.Text;
    Form1 ict = new Form1();

    if (name == "")
    {
        MessageBox.Show("Please Enter Your Name!");
    }
    else
    {
    ict._nameProcessed = name;
    this.DialogResult = System.Windows.Forms.DialogResult.OK;
    this.Close();
    }

}

答案 1 :(得分:0)

以第二种形式保存公共字段中的输入。隐藏第二个表单后显示您仍然可以访问公共变量。所以得到价值并处理第二种形式。

编辑: 在表单中停止代码执行。使用

secondForm.ShowDialog();
按照Jorge的建议