2011-03-26 25 views
5

Basit bir sorunum var: Kazanç formları/C# içinde ana formum var. Veritabanına bağlı bir liste kutusu vardır.Ana Formdan Çocuk Formuna Erişme

Düğmeye tıkladığımda yeni bir form oluşturulur.

Çocuk formundaki bir düğmeyi tıklattığımda, ana formda bulunan, liste kutusunu güncelleyen veya alternatif olarak alt öğe kapatıldığında, bu işlevi çağırmak için bir yöntem çağırmak istiyorum.

Bu mümkün mü?

+0

"Kaydet" ve "Uygula" düğmelerini içeren bir iletişim kutusu kullanmaya çalışıyorsunuz? – manji

cevap

6

Senaryo 1: Alt formda, alt formdaki düğmeyi tıklatarak bir yöntem çağırın.

Çocuk Formunda bir Event oluşturun. Bu olayı bazı Düğme Tıklamalarında yükseltin. Bu olaya Ebeveyn Formunuzda abone olun ve bunun içinde ebeveynin form yöntemini çağırın. Senaryo 2: Child Form kapandığında, Ana Formda bir yöntemi arayın.

Üst Formda, Çocuk Formu'nun FormClosed veya FormClosing olayını işleme alın ve bunun içinde ebeveyn form yöntemini çağırın.

ChildForm frm = new ChildForm(); 
frm.FormClosed += new FormClosedEventHandler(frm_FormClosed); 

void frm_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     //Call your method here. 
    } 
+0

Awesome ... Teşekkürler –

14

Bunu başarmanın birçok yolu vardır, ancak işte basit bir yol. Bir alt form oluşturmak ve gösterdiklerinde ana formda, böyle yapmak:

ChildForm child = new ChildForm(); 
child.Show(this); // this calls the override that takes Owner parameter 

Ardından, çocuk formundan ana formda bir yöntemi çağırmak gerektiğinde, böyle kullanım kodu (varsayar ana form türü MainForm) taşımaktadır:

MainForm parent = (MainForm)this.Owner; 
parent.CallCustomMethod(); 

daha karmaşık bir yolu kendi arayüzü, daha düzgün ebeveyn formuna referans geçmek (veya nerede bağımlılık enjeksiyon, bir çeşit kullanmak olacaktır) Çocuk formunun kurucusunda. Ancak yukarıdaki yol basit ve sizin için yeterince etkilidir (ve aslında bir bağımlılık enjeksiyonunun kendisidir, bir çeşittir).

+1

Ayrıca 'ShowDialog (this);' kullanabilirsiniz - kod her iki şekilde de aynı şekilde çalışacaktır. – MusiGenesis

İlgili konular