folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# Global Değişken Ve Datagridview ( Yardım )



C# Global Değişken Ve Datagridview ( Yardım )

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unchain
    unchain's avatar
    Kayıt Tarihi: 24/Ekim/2012
    Erkek

    Form2 deki datagridviewdeki veriye tıklandığında form1deki textboxa nasıl yazdırabilirim ? 

     public static void ilaclar()

            {

                textBox5.DataBindings.Clear();

                textBox5.DataBindings.Add("text", Form2.bs_ilac, "İlac Adı");

            }

    voidi böyle tanımlıyorum

    form2deki datagridin clickinde 

     private void dataGridView2_Click(object sender, EventArgs e)

            {

                Form1.ilaclar();

            }

     

    böyle çağırıyorum ama hata veriyor ilaclar voidinde.Sanırım textbox5 global değil diyor. Verdiği hata :

    Error1An object reference is required for the non-static field, method, or property 'Ödev1___Hasta_ilaç_kayıt__.Form1.textBox5'C:\Users\Koray\Desktop\Ödev1 ( Hasta ilaç kayıt )\Form1.cs5313Ödev1 ( Hasta ilaç kayıt )

    NE YAPMAM GEREKİYOR YARDIMCI OLURMUSUNUZ :D TEŞEKKÜRLER.


    Yaptığım onca iyiliğin tek yanlışta unutulduğunu gördüğümden beri kötü biriyim.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unchain
    unchain's avatar
    Kayıt Tarihi: 24/Ekim/2012
    Erkek

    Müritler bilen yok mu ne yapacağımı ?


    Yaptığım onca iyiliğin tek yanlışta unutulduğunu gördüğümden beri kötü biriyim.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ThundeR
    ThundeR's avatar
    Kayıt Tarihi: 08/Mart/2007
    Erkek

    form1 den form2 yi açtırdığın zaman,

    form2 de bir form1 nesnesi oluştur ve form1i oraya referans ver..

    sonrasında form2 de o nesnene her atıfta bulunduğunda form1i etkilersin

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unchain
    unchain's avatar
    Kayıt Tarihi: 24/Ekim/2012
    Erkek

    ThundeR sayesinde çözüldü. Kendisine çok ama çok teşekkür ediyorum... Çözümü de şu şekilde oldu :

    textbox5 global olmadığı için şu şekilde tanımladık : 

     public string txtBox
            {
                set
                {
                    textBox5.Text = value;
                }
            }

    daha sonra :

     private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                string ilac = dataGridView2.CurrentRow.Cells[0].Value.ToString();
    //yöntem 1 : // anaFormum.txtBox = ilac; // yöntem 1 için form2 nin public partialında public form1 anaFormum; tanımladık
    //form1 in form2 yi açan buttonunda form2 yi frm.anaformum=this; diye aktardık unutmuşum :)
    //yöntem2 : // ((Form1)Application.OpenForms["Form1"]).txtBox = ilac; }

    şeklinde çözdük olayı ThundeR'a tekrar çok teşekkür ediyorum :)

    unchain tarafından 30/Ara/12 22:47 tarihinde düzenlenmiştir

    Yaptığım onca iyiliğin tek yanlışta unutulduğunu gördüğümden beri kötü biriyim.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Sscheme
    Sscheme's avatar
    Kayıt Tarihi: 04/Mart/2007
    Erkek

    Daha profesyonel bir çözüm ve daha kompleks durumlar için Function Pointer kullanabilirsin.

     

         


    Bütün mesajlarım ve konularım BSD Lisansı"yla lisanslanmıştır.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unchain
    unchain's avatar
    Kayıt Tarihi: 24/Ekim/2012
    Erkek
    Sscheme bunu yazdı

    Daha profesyonel bir çözüm ve daha kompleks durumlar için Function Pointer kullanabilirsin.

     

         

    nasıl olacak hocam o daha profesyonel biraz açabilir misin ?


    Yaptığım onca iyiliğin tek yanlışta unutulduğunu gördüğümden beri kötü biriyim.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Sscheme
    Sscheme's avatar
    Kayıt Tarihi: 04/Mart/2007
    Erkek

    Örneğin Form1 deki textbox a yazdığın yazıyı Form2 deki fonksiyona göndermek istiyorsun

     

    Form 1 e

    // String parametre alıp void döndüren bir delegate yarat
    public delegate void IsYapDelegate(string value);
    // Sonra bu delegate in tipinde bir variable (callback) tanımla
    public IsYapDelegate isyapCallback;
    

    Form2 ye   register edilecek fonksiyonları ekle

    public void Foo(string str)
    {
        label1.Text = str;
    }
    
    public void Bar(string str)
    {
        label2.Text = str;
    }

       Sonra Form1 e

    // Button1 Form2 yi yaratarak Fonksiyonları Delegate imize register eder.
    private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm = new Form2();
                this.isyapCallback += new IsYapDelegate(frm.Foo);
                this.isyapCallback += new IsYapDelegate(frm.Bar);
                frm.Show();
            }
    
    // Son olarak Button2  ye tıkladığımızda Form2 ye textBox ımızdaki değeri gönderir. Form2 de bunu label larında gösterir
    private void button2_Click(object sender, EventArgs e)
            {
                isyapCallback(textBox1.Text);
            }

     

     

     

     


    Bütün mesajlarım ve konularım BSD Lisansı"yla lisanslanmıştır.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unchain
    unchain's avatar
    Kayıt Tarihi: 24/Ekim/2012
    Erkek

    form1 deki textboxa yazdıgımı form2 ye göndermek istemiyorum hocam.
    form1den form2 sayfası açtırıyorum.. yeni acılan form2 sayfasından form1 deki textboxa ulaşmak istiyorum.


    Yaptığım onca iyiliğin tek yanlışta unutulduğunu gördüğümden beri kötü biriyim.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    şöyle bir şey yapabilrisin hocam bu bana göre çok pratik ve çok kişinin bilmediği bir  yöntem :)

    normalde var olan formdan (form1 diyelim) yeni bir örnek türetince açık olan formdaki değere ulaşamazsın. mesela

    form1 açık olsun ve text kutusuna bir şeyler yazdın.

    form2 yi oluşturdun ve oradan 

    form1 frm= new form1();

    şeklinde yeniden türetmeye yapabilirsin ama bu sefer ilk açtığın form1 deki değere ulaşamazsın. Mantık buradan çıkıyor işte, daha önce açık olan o forma erişebilmek :) textbox1 e erişmek istediğin içn önce modifier ini public yap ki form2 den ulaşalım

     

    sonra form2 de nerede istiyorsan

     

    Form1  benimForm = (Form1)System.Windows.Forms.Application.OpenForms["Form1"];

    yazarsan açık olan form1 e ulaşıp örneğini benimForm değişkenine atmış oluyorsun. Bundan sonraki işin kolay

     

    textbox1.Text = benimForm.textbox1.Text;

     

    yzarak form2 deki textbox1 e, form1 deki textbox1 in değerini atamış olursun


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Yöntemler uygulanabilir fakat uygulamayı zayıflatır. unbalanced'ın yöntemi daha doğru geliyor bana. Çünkü bir metoda ya da nesneye ulaşabilmenin yolu, nesnenin public olarak erişilmesidir. 

    program.cs içinde bu işlemler yapılabilir (evet, C#'ın kendisine ters).

    YeniHarman tarafından 31/Ara/12 01:56 tarihinde düzenlenmiştir

    Olaylara karışmayın!
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unchain
    unchain's avatar
    Kayıt Tarihi: 24/Ekim/2012
    Erkek
    unbalanced bunu yazdı

    şöyle bir şey yapabilrisin hocam bu bana göre çok pratik ve çok kişinin bilmediği bir  yöntem :)

    normalde var olan formdan (form1 diyelim) yeni bir örnek türetince açık olan formdaki değere ulaşamazsın. mesela

    form1 açık olsun ve text kutusuna bir şeyler yazdın.

    form2 yi oluşturdun ve oradan 

    form1 frm= new form1();

    şeklinde yeniden türetmeye yapabilirsin ama bu sefer ilk açtığın form1 deki değere ulaşamazsın. Mantık buradan çıkıyor işte, daha önce açık olan o forma erişebilmek :) textbox1 e erişmek istediğin içn önce modifier ini public yap ki form2 den ulaşalım

     

    sonra form2 de nerede istiyorsan

     

    Form1  benimForm = (Form1)System.Windows.Forms.Application.OpenForms["Form1"];

    yazarsan açık olan form1 e ulaşıp örneğini benimForm değişkenine atmış oluyorsun. Bundan sonraki işin kolay

     

    textbox1.Text = benimForm.textbox1.Text;

     

    yzarak form2 deki textbox1 e, form1 deki textbox1 in değerini atamış olursun

    Sanırım bende bu yöntemi uyguladım hocam ama başarılı oldum sonuçta sadece sScheme adlı hocamın dediklerine takıldım onun fikrini merak ettiğim için sordum :)


    Yaptığım onca iyiliğin tek yanlışta unutulduğunu gördüğümden beri kötü biriyim.
Toplam Hit: 2881 Toplam Mesaj: 13