2013-07-24 192 views
1

我有一個值(讓CompanyId)在一個子窗體中。我想在MDI父窗體的級別傳遞此值。我如何從子窗體發送數據到父母MDI窗體或父母MDI從C#中的子窗體?

在子窗體中,我從datagrid視圖中的數據庫中檢索數據。 現在我從datagrid視圖中選擇一個值。

string SkillName = dataGridView1.CurrentRow.Cells [「SHORTS」]。Value.ToString();

現在我想將此SkillName值傳遞給MDI父窗體。 我該怎麼做?

+1

你能告訴你什麼到目前爲止解決這個問題呢? – xxbbcc

+0

在子窗體中,我從datagrid視圖中的數據庫檢索數據。 現在我從datagrid視圖中選擇一個值。 string SkillName = dataGridView1.CurrentRow.Cells [「SHORTS」]。Value.ToString(); 現在我想將這個SkillName值傳遞給MDI父窗體。 我該怎麼做? –

回答

2

字面上有無數的方法來做到這一點。這一切都取決於你想要做什麼以及爲什麼。 @ f0x方式不錯,還可以使用公共參數,創建一個事件並在需要時彈出它,設置一個標誌(可以是全局標誌)等等。

如果你想傳遞簡單的數據從父母到孩子,你可以這樣做,如f0x所說,在構造函數中,或讓孩子註冊一個你執行的事件,發送一個字符串/ int /等。那麼只要您(父母)想要並且孩子立即處理該數據,您就可以執行該事件。

它可以繞走另外一條道路:當父創建子,它在一個事件註冊的子火...

這裏有一個例子:

public partial class Form1 : Form 
{ 

    public void RegisterSon() 
    { 
    ChildForm frm = new ChildForm(); 
    frm.MyEventChild += new MyEvntHndler(frm_MyEventChild); 
    } 

    void frm_MyEventChild(string data) 
    { 

    } 
} 

public delegate void MyEvntHndler(string data); 

public class ChildForm: Form 
{ 
    public event MyEvntHndler MyEventChild; 

    private void button1_Clicked(object sender, EventArgs e) 
    { 
    if (MyEventChild != null) 
    { 
     MyEventChild("This is my data"); 
    } 
    } 
} 
2

最簡單的方法是將companyId作爲參數傳遞給表單的構造函數。

例如在公司的形式:

public partial class CompanyForm : Form 
{ 
    public CompanyForm(int companyId) 
    { 
     InitializeComponent(); 
    } 
} 

當你調用新的形式,簡單地從您的通話形式傳遞值:

var form = new CompanyForm(10); // '10' the id 
form.MdiParent = this; 
form.Show(); 
相關問題