2012-04-06 50 views
0

我有一個非常基本的問題。 場景:2表單Form1,Form2-從用戶獲取3個輸入的對話框 Form1有一個網格,用戶可以在其中選擇一些單元格。 一旦用戶做出選擇,所述的rowIndex和colindex被存儲在變量C1,C1,R1,R2在窗體之間傳遞數據並在Form1中繼續

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); 

    } 


} 

在窗體2: 它需要3個參數。 nrows,time,value 現在我需要將這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

回答

0

所以Form2應該是彈出式的?

在當您創建它,用

MyForm2.ShowDialog(); 

這打開它將使該對話框的「莫代爾」,這意味着用戶將不能夠與第一種形式互動,直到此種情況下,已經處理了這種新形式。然後,如果你在表格2中有公共財產,你應該能夠以表格1訪問它們。

+0

這很簡單! – user575219 2012-04-06 19:10:17

0

你其實已經說你需要執行insertdata。 呼叫

form2.ShowDialog()

這是一個「堵」的電話,所以Form1代碼會等到用戶關閉Form2後,你可以從中讀出一個值。

希望這會有所幫助。