Şimdi Ara

Csharp Açık Olan Forma Başka Formdan Veri Gönderme

Bu Konudaki Kullanıcılar:
3 Misafir - 3 Masaüstü
5 sn
9
Cevap
0
Favori
6.259
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar Merhaba ,

    Şuan bir deneme yapmaya çalışıyorum ama beceremedim.MDIFormum var ve bunun içinde açtığım bir parent formum var.
    Parent formun içindeki bir buton vasutası ile kullanıcıya veri girmesi için showdialog açıyorum.Burdaki textbox a veri girmesini ve kaydet butonuna bastığında parent formdaki bir labelda textboxa girilen değerin gösterilmesini istiyorum.
    Bulduğum örneklerde benzer çalışmalar yapılmış ama açık olan formdan sonra açılan forma veri girildiğinde mevcuttaki açık olan forma veri gönderemiyorum.
    Biraz karışık oldu sanırım ama cevaplarsanız sevinirim.



  • Merhaba,

    Eğer yanlış anlamadıysam, Örn: Form1 içindeki Textbox'taki veriyi, Form2 içerisindeki textbox'a aktarmaktan bahsediyoruz.

    İki formdaki textboxları Public yapıp;

    Form1'den Form2'ye gönderiyorsan;
    Form1 deki buton altına;
    Form2 frm2= new Form2;
    frm2.textBox1.text=textBox2.text; (textBox2 Form1 de kullanıyor.)

    Form2 için ise ;
    Form2 deki buton altına ;
    Form1 frm1=new Form1;
    frm1.textBoxt2.text=textBox1.text;

    Umarım doğru anlamışımdır

    Aktarım yapacağın yer neresi olursa olsun, public yaparsan ve tag tanımlarsan kullanabilirsin. NOT: Ciddi amaçlı programlarda Public pek kullanılmaz



    Edit: Bilgi ekleme.



    < Bu mesaj bu kişi tarafından değiştirildi Cuhara -- 18 Mayıs 2012; 16:05:06 >




  • Arkadas cevap vermis ama bir yontemde;
    Public fonksiyondur. Bu sekilde textboxina disaridan ulasilamaz ama texti degistirilebilir.

    Form2'nim kod bloguna;
    public void VeriGonder(string yazi)
    {
    textBox2.Text = yazi;
    }
    Bunu yaptiktan sonra form1de
    Form2 form2 = new Form2();
    form2.ShowDialog();
    form2.VeriGonder(textBox1.Text);

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • Arkadaşlar cevaplarını için teşekkür ederim.Fakat ben bu iki yöntemi de denemiştim olmadı.
    Sizde burda form2.showDilog(); diyerek formu açıyorsunuz.
    ama benim formum zaten açık.
    Demek istediğim Default olarak açılan formumdaki bir buton ile yeni form açıyorum.Yeni açılan formdan girdiğim bir değeri ilk açılan formda göstermeye çalışıyorum.
    Tekrar showdialog dersem zaten açık olan form ikinci kez açılıyor.

    Çözümü bugünkü aramalarım sonucu buldum.O da delegate yöntemiymiş.
  • Kodu yazarak burda paylaşssana
  • Neden bu kadar sabit goruslusunuz bilmiyorum bak yukarida arkadasin yazdigi kodu kopyala eger acik bir formu yonetmek istiyorsan
    Form2 form = new Form2();
    ve showdialog satirina ihtiyacin yok. Formuda showdialog la acma showla ac. Cunku showdialogun altina yazdigin kodlar diger form kapandiktan sonra gerceklesir. Delegatein de aslinda burdaki cozum yolunu goremedim. Delegate dedigin olay herhangi bir durum karsisinda onceden tanimlanan bir metoda gerekli paramterelerin gonderilmesi ve o metodun cagirilmasi islemidir. Ornegin sen buttonun click olayina gittiginde sana bir metod veriyor. Ama sen bunu cagirildiini hic bir yerde gormuyorsun. Cunku bunun cagirilma islemi daha onceden tanimlanan Button sinifindan (muhtemelen bundan emin degilim ama genel mantik budur) yapiliyor.
    Delegate yontemiyle cozduun yol da su sekilde olabilir;
    İkinci forma birinci formdaki buttonun tiklanipmasiyla ilgili bir islen verirsen form2 acikken form1 den butona basildiginda senin istedigin islemler yapilir. Ama sen yine de buldugun yolu buraya yaz da biz de bilgilenelim

    < Bu ileti mobil sürüm kullanılarak atıldı >




  • Dedigin olayda su sekilde yapilir acik formdan ana forma;
    bu sefer form1 (ana form) da bir metod ac public olsun. Patametre olarak string bir veri iste. Daha sonra icinde artik textbox textini mi degistirirsin ne istersen onu yap. Bu metod tanimlama islemi bittikten sonra child formunda ( form2 sanirim) .MdiParent ozelligini kullanarak mesela;
    this.MdiParent.VeriGonder("asdfghjkl"); yazdiginda ana formuna bu veri gider. Bu dediklerimi yapabilmen icin ana forma child olarak form2 yi ve form2 yede parent olarak form1 i vermis olman lazim

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • @welrocken cevapların için teşekkürler. Birçok yöntemi denedim olmadı. ama bu delegate yöntemi süpermiş.
    Programı gönderiyorum bir incele istersen.

    İNDİR


    using System; 
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace Form2
    {
    public partial class Form1 : Form
    {

    void form2_olayimBenim(TextBox txtBox)
    {
    lbIsimler.Items.Add(txtBox.Text);
    }



    public Form1()
    {
    InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
    Form2 form2 = new Form2();
    form2.olayimBenim += new Form2.delegemBenim(form2_olayimBenim);

    form2.ShowDialog();
    }
    }
    }



    using System; 
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace Form2
    {
    public partial class Form2 : Form
    {
    public Form2()
    {
    InitializeComponent();
    }


    public delegate void delegemBenim(TextBox txtBox);

    public event delegemBenim olayimBenim;

    private void Form2_Load(object sender, EventArgs e)
    {

    }

    private void btnIsimEkle_Click(object sender, EventArgs e)
    {
    this.olayimBenim(txtIsim);
    }
    }
    }




  • İyi sen cozumu bulduysan sorun yok. Tavsiyem delegate konusunu da iyi ogren zaten giris yapmis oldun. Ogrenmen kolay olur.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.