Forumun birisinde üyenin birisi C# uygulaması dahilinde başka formdaki nesnelere nasıl ulaşırım diye soruyordu. İşte kendisine verdiğim cevap: Bu konuda bilgi bulman biraz zordur. Çünkü şöyle bir durum var: Projenin başlangıç formunun yani Form1 sınıfının kopyası proje çalıştırıldığında otomatik olarak hazırlanıp ekrana getiriliyor. Projedeki ikinci formun örneğini(yani nesne hazırlama işlemini) kendin alıp ekrana getiriyorsun.
2. formun kopyası üzerinde çalışırken otomatik olarak hazırlanıp projenin başlangıç formu yapılan Form1 sınıfının örneğine ulaşmak istiyorsun. Bu sorunu çözmenin değişik çözümleri olmakla birlikte en kestirmesi ve sağlıklısı Application sınıfından yararlanmaktır. Sorunu çözmene yardımcı olmak için 2 forma sahip bir proje hazırladım. İlk forma bir TextBox ve button yerleştirdim. İlk formdaki düğme tıklandığında ikinci form ekrana gelecek. İşte ilk formdaki düğmenin Click olayını temsil etmesi için yazdığım metot.
namespaceWindowsFormsApplication1
{
public partial classForm1 : Form
{
publicForm1()
{
InitializeComponent();
}
private voidbutton1_Click(objectsender, EventArgs e)
{
Form2 F2 = newForm2();
F2.Show();
}
}
}
Form1’de bu hazırlığı yaptıktan sonra Form2’nin üzerine yine bir Button ve bir TextBox yerleştirdim. Form2 aktif form iken Form2’nin üzerindeki düğme tıklandığı zaman Form2’deki TextBox’ın içeriği Form1’deki yani projenin başlangıç formunun üzerindeki TextBox’a aktarılacak. Bu amaçla yazdığım kod aşağıdadır. Bu teknikle Form1’de TextBox’a ulaşılırken bu TextBox’ı Modifiers özelliğinde değişiklik yapmaya gerek yoktur.
namespaceWindowsFormsApplication1
{
public partial classForm2 : Form
{
publicForm2()
{
InitializeComponent();
}
private voidbutton1_Click(objectsender, EventArgs e)
{
Application.OpenForms[0].Controls["textBox1"].Text = textBox1.Text;
}
}
}