Ynt: Sınıftaki bütün fonksiyonlardan form1'e ulaşmak

Başlatan carirt, 11 Mayıs 2014, 23:57:01

carirt

şöyle yapınca oluyor

formdaki buton click olayı
public void button1_Click(object sender, EventArgs e)
        {
            Class1 ty = new Class1();
            ty.Class(this);
           
        }
sınıftaki fonksiyonda bu
    public void Class(Form1 frm)
       {
           frm.richTextBox1.SelectedText = Environment.NewLine + "asdfgqwer";

       }
bu şekilde textbox a yazıyor

Benim yapmak istediğim sınıfa bir sürü değişik değişik fonksiyonlar yazıp form1 e ulaşmak ama parametre olarak (Form1 frm) kullandığım için fonksiyonlara nasıl parametre göndericem başka yöntemleri varmı?
Yani sınıfta bir tane genel Form1 nesnesi tanımlayım ve sınıftaki bütün fonksiyonlarda kullanayım.



mesaj birleştirme:: 12 Mayıs 2014, 00:27:16

İngilizce forum sitelerinde araştırırken çözümü buldum

Form1'deki buton click olayı aynı

private void button1_Click(object sender, EventArgs e)
        {
            Class1 ty = new Class1();
            ty.Yazı_yazcaz(this);
                   
        }
Sınıfta şu değişiklikleri yaptım

namespace WindowsFormsApplication1
{
     
    class Class1
    {

        public Form1 f;
        public void Yazı_yazcaz(Form1 frm1)
        {
            f = frm1;
            çağır_fonksiyon();
           
           
        }
        public void çağır_fonksiyon()
        {
            f.textBox2.Text = "1111111111";

        }
    }
}
Görüldüğü gibi sınıf için genel bir Form1 nesnesi yaptım o nesne f diğer fonksiyonda textbox a yazıyor

barisertekin

Sınıfa form nesnesini parametre olarak göndermek göze hoş gelmiyor derseniz.

FormCollection FC = Application.OpenForms;
foreach (Form appform in FC)
{
      appform.Activate();
      appform.Show();
}


veya

Application.OpenForms[0]

veya

Application.OpenForms["Form1"] şeklinde erişebilirsiniz. String overloading'i var mıdır emin değilim.

cengav4r

Tam bilgim yok ancak belli bir class oluşturulup o class içinde tanımlanan değer için özelliklik oluşturularak get set komutlarıyla, tanımlanan değerin özelliğini okuyabilme ya da değiştirebilme olarak biliyorum. Takipteyim örnek bir uygulama gösterirseniz bizde memnun oluruz.

barisertekin

#3
Get Set ile yapmak ta hoş olmaz.

Arkadaşın yaptığı örnekte class'ın örneğini alırken form1 nesnesini parametre olarak vermeyi zorunlu kılıyor. Yani;

Class cls = new Class(this);

Get Set ile yapılırsa aşağıdaki gibi kullanmak gerekir.

Class cls = new Class();
cls.FormNesnesi = this;

----

Kod yazarken sizin verdiğiniz class'ı başkalarınında kütüphanelerine ekleyerek kullanabileceğini düşünürsek.
Get Set yöntemini kullandığımızda Form1 nesnesini atamak kodu yazmayanın aklına gelmez. ve runtime error alır. 2 saat kodu inceler.

En kolay anlaşılır yapıda yazmak başarı getirir. Tabii duruma göre uyum sağlamak gerekir. 10 parametre varsa overload yapmanın bir alemi yok.