在表单之间传递数据并在Form1中继续

时间:2012-04-06 18:49:41

标签: c# winforms

我有一个非常基本的问题。 场景:2表单Form1,Form2-对话框,其中包含来自用户的3个输入 Form1有一个网格,用户可以在其中选择一些单元格。 用户进行选择后,rowindex和colindex存储在变量c1,c1,r1,r2

Form1:

private InsertRowsMethod(...)
{
float dv ;
     GridRangeInfoList list;
       Boolean b = theGrid.Selections.GetSelectedRanges(out list, true);
       if (list.Count > 0)
       {

          r1= list.ActiveRange.Top;  
          c1 = list.ActiveRange.Left;
          c2 = list.ActiveRange.Right;
       }
     DateTime dt;
    frmDialog dialog = new frmDialog();

    dialog.Show();

     int dialognrows = Int32.Parse(dialog.textBox1.Text);
    float dialogdv = float.Parse(dialog.textBox2.Text);
   // var dttext = (DateTime.Parse(textBox3.Text)).Ticks;

    TimeSpan dialogdt = TimeSpan.Parse(dialog.textBox3.Text);


    for (int nc = insertc1; nc <= insertc2; nc++)
    {
        insertData(nc, insertr1, dialognrows, dialogdv, dialogdt, null);

    }


}

在Form2中:  它需要3个参数。 NROWS,时间价值 现在我需要将这3个变量从Form2-Dialog传递给Form1。 我尝试了蛮力方式(我想改变,我稍后会谈到)

In form2: I created method

     private void button1_Click(object sender, EventArgs e)
            {
                int nrows = Int32.Parse(textBox1.Text);
                float dv = float.Parse(textBox2.Text);
               // var dttext = (DateTime.Parse(textBox3.Text)).Ticks;

                TimeSpan dt = TimeSpan.Parse(textBox3.Text);
                this.Hide();



}

所以它有效,我能够将三个参数nrows,dv,dt(用户输入)从对话框传递给form1-main表单。

问题:我希望Form1中的程序等待,显示对话框,接受用户输入并返回并继续执行此部分。

     for (int nc = insertc1; nc <= insertc2; nc++)
                    {
                    insertData(nc, insertr1, dialognrows, dialogdv, dialogdt, null);

                    }}

对话框应显示然后返回到form1以执行insertdata

2 个答案:

答案 0 :(得分:0)

你实际上已经说过你需要的了。 呼叫

form2.ShowDialog()

这是一个“阻止”调用,因此Form1代码将等到用户关闭Form2并且您可以从中读取值。

希望这有帮助。

答案 1 :(得分:0)

那么Form2应该是一个弹出窗口吗?

在您创建的情况下,请使用

打开它
MyForm2.ShowDialog();

这将使对话框“模态”,这意味着用户在处理此新表单之前将无法与第一个表单进行交互。然后,如果您在表单2中有公共属性,则应该能够以表单1访问它们。