2012-05-23 87 views

回答

1

要訪問您需要使用文本數據:textBox1.Text

形式是一個對象,所以你可以定義更新的文本框中值的方法(可以公開文本框本身與公共訪問)

1

要將信息從父項傳遞給子窗體,應該在子窗體上爲其需要接收的數據創建一個屬性,然後讓父窗體設置該屬性(例如,在按鈕上單擊)。

要讓子表單將數據發送給父表單,子表單應該創建一個屬性(它只需要是一個getter)並將其發送給父表單。然後它應該創建一個父母可以訂閱的事件(或使用現有的事件Form)。

一個例子:

namespace PassingDataExample 
{ 
    public partial class ParentForm : Form 
    { 
     public ParentForm() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      ChildForm child = new ChildForm(); 
      child.DataFromParent = "hello world"; 

      child.FormSubmitted += (sender2, arg) => 
      { 
       child.Close(); 

       string dataFromChild = child.DataFromChild; 
      }; 

      child.Show(); 
     } 
    } 
} 

namespace PassingDataExample 
{ 
    public partial class ChildForm : Form 
    { 
     public ChildForm() 
     { 
      InitializeComponent(); 
     } 

     public string DataFromParent { get; set; } 

     public string DataFromChild { get; private set; } 

     public event EventHandler FormSubmitted; 

     private void button1_Click(object sender, EventArgs e) 
     { 
      DataFromChild = "Hi there!"; 

      if (FormSubmitted != null) 
       FormSubmitted(this, null); 
     } 
    } 
} 
0

我不知道你說「不顯示()/ ShowDialog的()」的意思到底是什麼,但無論如何,這是不相關的,否則我就只是假設這裏進一步你打開了兩個窗口(無關緊要)。

您希望避免兩種表單之間的耦合,特別是不需要像文本框等實現細節。您可以使用delegatesevents來觸發兩種表單之間的「發送」數據。然後,您可以輕鬆地傳遞事件數據,並且您訂閱的其他表單(或其他任何其他對象,事實上)不知道表單的確切實現細節,它只知道它將通過委託(事件)。我不打算在此發佈所有代碼,因爲它已在以下網址中得到很好的解釋:http://www.codeproject.com/Articles/17371/Passing-Data-between-Windows-Forms

相關問題