C# sonradan açılan formdan önce açılan forma bilgi gönderme

Sonradan açılmış olan bir formdan daha evvel açılmış olan bir forma bilgi göndermek, o formdaki bir metodu çalıştırmak gibi işlemleri yapmak isteyebilirsiniz. Bunu için bazı noktalara dikkat etmemiz gerekmekte.

Örnekle açıklayacak olursa, diyelim ürünleri listeleyen formunuz var ve bu formuda ürünü seçince satış butonunu tıkladınız ver satış formunda ürünün satışı gerçekleşince ürünler formundaki bilgiyi güncellemeniz gerekmekte. İşte bunu yaparken bazı noktalara dikkat etmeniz gerekir.

  • İlk olarak açılan ürünler formunuzu açmadan evvel isimlendirmeniz gerekmekte. Birden fazla form ile çalışıyorsanız her forma aynı isim vermek zorundayız. Burada dikkat etmeniz gereken nokta eklediğimiz forma verdiğimiz ismin önemi yok. Instance yada mdi olarak açacağımız formu göstermeden evvel ismini belirlemeliyiz. Onu da şu şekilde yapıyoruz.
//Dikkat edin bu doğru ama eksik form açma
Form2 yeni = new Form2();
yeni.Show();

normalde yukarıdaki kod ile formu açarız. Doğru ancak eksik çünkü açılacak forma isim vermedik. Nasıl vereceğiz bunu? İşte böyle;

Form2 yeni = new Form2();
yeni.Name = "deneme";     //bu satır önemli aman dikkat !
yeni.Show();

artık formunuz açılırken isim almış oldu. Formu sadece bir kez açmak isterseniz buradaki makaleyi okuyunuz.

Gelelim açılmış artık yeni açılan formdan eski formdaki bir metoda, bir nesneye yada bir olaya nasıl ulaşacağız.

İlk olarak ulaşacağımız bir metod yada olay ise tanımlamasını yaparken public yapmacağız ki tüm formlardan bu metoda ulaşabilelim. Mesela listele adında bir metoda ulaşmamış lazım tanımlamasını public void listele() şeklinde yapmalıyız ki tüm formlara açık hale gelsin.

Eğer bir nesneye yani textbox, label gibi nesnelere ulaşacaksak o nesnenin de modifiers özelliğini publüc yapacağız ki o nesne de diğer formlara açık hale gelsin.

Artık formda neye istersek ona ulaşabiliriz. Onun içinde kodumuz şu şekilde olmalıdır.

Form2 abc = (Form2)Application.OpenForms["deneme"];
abc.textBox1.Text = "aaa";   //bir nesneye ulaşabiliriz.
abc.listele();               //bir metoda ulaşabiliriz.

Burada dikkat etmemiz gereken tek nokta

yeni.Name = "deneme";

satırında bulunan deneme ile

Form2 abc = (Form2)Application.OpenForms["deneme"];

satırındaki deneme birbirinin aynısı olmalıdır. Aksi halde hata alırsınız. abc’nin bir önemi yok. İstediğiniz şekilde isimlendirebilirsiniz o kısmı.

Herkese iyi çalışmalar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir