19 Mayıs 2011 Perşembe

Başka bir formun butonuna tıklama

Merhaba.

Zaman zaman, "başka bir formun butonunu tıklatma", "başka bir formdaki nesnenin özelliklerini değiştirme", "formlar arası mesaj gönderme" gibi sorularla karşılaşıyorum.

Problemin senaryosu gayet basit. Diyelim Form1 ve Form2 isimlerinde iki form var bir projede. Amaç Form2'de bulunan bir butona basınca Form1'deki bir butona basılma durumunu gerçekleştirmek.

Çözüm de şöyle;


--Form2 içinde--


public Form1 frm1;

private void button1_Click(object sender, EventArgs e)
{
frm1 = (Form1)Application.OpenForms["Form1"];
frm1.button1.PerformClick();

}


Visual Studio Form1'i ve nesnelerini ( frm1.button2.PerformClick() ) şeklinde doğrudan çağırmamıza da izin veriyor ancak derleme anında olmasa da çalışma anında framework NullReferenceException hatası veriyor.

Bu çözüm sadece aynı uygulama içinde farklı formlar arası iletişim içindir. Farklı .net uygulamaları arası iletişim için farklı(.net Remoting), .net mimarisi kullanmayan bir ya da birden fazla uygulama arası iletişim için(Interprocess Communication) farklı yollar vardır.

Bir ara onlardan da bahsedeyim hatırlatın da.

1 yorum:

Adsız dedi ki...

Form1 a = new Form1();
a.button1.Visible = false;

boyle bir kodda button1 yerinde hata veriyor.