none
formlar arası veri RRS feed

  • Soru

  • mrb,

    kodlarımı aşağıdaki gibi, sürekli yeni form açarak veri taşınmakta, bunu açık olan

    form2 ye nasıl taşırım,

    //form1 kodlar,,
    
            private void gridView1_DoubleClick(object sender, EventArgs e)
            {
                Form2 fr = new Form2();
                DataRow dr = gridView1.GetDataRow(gridView1.FocusedRowHandle);
    
                if (dr != null)
                {
                    fr.id = dr[2].ToString();
                    fr.belge = dr[1].ToString();
                    fr.tarih = dr[0].ToString();
                    fr.tutar = dr[3].ToString();
                    
                }
                fr.Show();
                
           
            }
    
    // form2 kodlar,,,
     public string id;
            public string belge;
            public string tarih;
            public string tutar;
    
    
            private void Form2_Load(object sender, EventArgs e)
            {
                label1.Text = id;
                Txtbelge.Text = belge;
                TxtTarih.Text = tarih;
                Txttutar.Text = tutar;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form1 f2 = new Form1();
    
                f2.ShowDialog();
                this.Hide();
    
            
            }

    27 Şubat 2018 Salı 11:48

Yanıtlar

  • Form2 fr =(Form2)Application.OpenForms["Form2"];
    
    Açık olan form için bu şekilde çağırabilirsiniz
    • Yanıt Olarak İşaretleyen canleveent 28 Şubat 2018 Çarşamba 14:27
    27 Şubat 2018 Salı 18:42
  • // Projenize bir class ekleyin.!.
    public class Bilgi
    {
        int id { get; set; }
        string belge { get; set; }
        DateTime tarih { get; set; }
        Decimal tutar { get; set; }
    
        public Bilgi(DataRow dRow = null)
        {
            if (dRow != null)
            {
                id = Convert.ToInt32(dRow[2]);
                belge = dRow[1].ToString();
                tarih = Convert.ToDateTime(dRow[0]);
                tutar = Convert.ToDecimal(dRow[3]);
            }
        }
    }
    
    //program.cs dosyasında,
    public static Bilgi bilgi;
    
    //form1 kodlar,
            private void gridView1_DoubleClick(object sender, EventArgs e)
            {
                Program.bilgi = new Bilgi( gridView1.GetDataRow(gridView1.FocusedRowHandle));
                Form2 fr = new Form2();
                fr.Show();
            }
    
    // form2 kodlar,
    
            private void Form2_Load(object sender, EventArgs e)
            {
                label1.Text = Program.bilgi.id.ToString();
                Txtbelge.Text = Program.bilgi.belge;
                TxtTarih.Text = Program.bilgi.tarih.ToString("dd.MM.yyyy HH:mm");
                Txttutar.Text = Program.bilgi.tutar.ToString();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form1 f2 = new Form1();
                f2.ShowDialog();
                this.Hide();
            }


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 28 Şubat 2018 Çarşamba 14:28
    28 Şubat 2018 Çarşamba 13:42
  • class Bilgi içerisinde tarihi object olarak tanımlamışsınız onu DateTime yapın sorun kalmaz...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 1 Mart 2018 Perşembe 12:37
    • Yanıt İşaretini Geri Alan canleveent 1 Mart 2018 Perşembe 12:37
    • Yanıt Olarak İşaretleyen canleveent 1 Mart 2018 Perşembe 15:30
    1 Mart 2018 Perşembe 12:24
  • // Hatalı kullanmışsınız...
    label1.Text = Program.bilgi.ToString();
    // Doğru kullanım...
    label1.Text = Program.bilgi.id.ToString();


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 1 Mart 2018 Perşembe 15:30
    1 Mart 2018 Perşembe 13:44
  • // Projenize bir class ekleyin.!.
    public class Bilgi
    {
        int id { get; set; }
        string unvan { get; set; }
        DateTime tarih { get; set; }
        Decimal tutar { get; set; }
    
        public Bilgi(DataRow dRow = null)
        {
            if (dRow != null)
            {
                id = Convert.ToInt32(dRow[2]);
                unvan = dRow[1].ToString();
                tarih = Convert.ToDateTime(dRow[0]);
                tutar = Convert.ToDecimal(dRow[3]);
            }
        }
    }
    
    //program.cs dosyasında,
    public static Bilgi bilgi;
    
    //form1 kodlar,
            private void gridView1_DoubleClick(object sender, EventArgs e)
            {
                Program.bilgi = new Bilgi( gridView1.GetDataRow(gridView1.FocusedRowHandle));
                Form2 fr = new Form2();
                fr.Show();
            }
    
    // form2 kodlar,
    
            private void Form2_Load(object sender, EventArgs e)
            {
                BilgiAl();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form1 f1 = new Form1();
                f1.ShowDialog();
                BilgiAl();
            }
    
            private void BilgiAl()
            {
                label1.Text = Program.bilgi.id.ToString();
                TxtUnvan.Text = Program.bilgi.unvan;
                TxtTarih.Text = Program.bilgi.tarih.ToString("dd.MM.yyyy HH:mm");
                TxtTutar.Text = Program.bilgi.tutar.ToString();
            }
    Bu kodları değiştirmeden, ilgili bölümlerde kullanın...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 2 Mart 2018 Cuma 07:54
    1 Mart 2018 Perşembe 17:21
  • Tanımı string, atamayı da ToString() yapın.

    O alan 11 haneli metin...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 2 Mart 2018 Cuma 14:18
    2 Mart 2018 Cuma 13:30
  • dRow dizisinde 12'den az eleman var.

    Yani dRow[11] yok...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 2 Mart 2018 Cuma 15:19
    2 Mart 2018 Cuma 14:27
  • private void BilgiAl()
    {
        if (Program.Bilgi != null)
        {
            label1.Text = Program.bilgi.id.ToString();
            TxtUnvan.Text = Program.bilgi.unvan;
            TxtTarih.Text = Program.bilgi.tarih.ToString("dd.MM.yyyy HH:mm");
            TxtTutar.Text = Program.bilgi.tutar.ToString();
        }
    }


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 3 Mart 2018 Cumartesi 14:08
    3 Mart 2018 Cumartesi 13:50

Tüm Yanıtlar

  • Form2 fr =(Form2)Application.OpenForms["Form2"];
    
    Açık olan form için bu şekilde çağırabilirsiniz
    • Yanıt Olarak İşaretleyen canleveent 28 Şubat 2018 Çarşamba 14:27
    27 Şubat 2018 Salı 18:42
  • // Projenize bir class ekleyin.!.
    public class Bilgi
    {
        int id { get; set; }
        string belge { get; set; }
        DateTime tarih { get; set; }
        Decimal tutar { get; set; }
    
        public Bilgi(DataRow dRow = null)
        {
            if (dRow != null)
            {
                id = Convert.ToInt32(dRow[2]);
                belge = dRow[1].ToString();
                tarih = Convert.ToDateTime(dRow[0]);
                tutar = Convert.ToDecimal(dRow[3]);
            }
        }
    }
    
    //program.cs dosyasında,
    public static Bilgi bilgi;
    
    //form1 kodlar,
            private void gridView1_DoubleClick(object sender, EventArgs e)
            {
                Program.bilgi = new Bilgi( gridView1.GetDataRow(gridView1.FocusedRowHandle));
                Form2 fr = new Form2();
                fr.Show();
            }
    
    // form2 kodlar,
    
            private void Form2_Load(object sender, EventArgs e)
            {
                label1.Text = Program.bilgi.id.ToString();
                Txtbelge.Text = Program.bilgi.belge;
                TxtTarih.Text = Program.bilgi.tarih.ToString("dd.MM.yyyy HH:mm");
                Txttutar.Text = Program.bilgi.tutar.ToString();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form1 f2 = new Form1();
                f2.ShowDialog();
                this.Hide();
            }


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 28 Şubat 2018 Çarşamba 14:28
    28 Şubat 2018 Çarşamba 13:42
  • hocam mrb, class oluşturdum,

    form 2 de  // TxtTarih.Text = Program.bilgi.tarih.ToString("dd.MM.yyyy HH:mm");

    bunda hata veriyor. (ToString("dd.MM.yyyy HH:mm"); altı kırmızı çizgi oluyor).

    class içerisine

    //  internal string ToString(string v)

            {

                throw new NotImplementedException();

            }

    bu kodlar eklediğimizde çalıışıyor,

    ve yine yeni form açılıyor, açık form2 ye taşımıyor, bizamet tekrar inceleyerek dönebilir misiniz,

    syg


    1 Mart 2018 Perşembe 11:12
  • tarih alanını DateTime tipinde tutmuyor olabilirsiniz. Kodları hatalı kullanıyor olabilirsiniz.

    Kullandığınız halini paylaşırsanız yardımcı olabilirim...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...


    1 Mart 2018 Perşembe 11:29
  • Oluşturduğunuz class ve onu kullandığınız bölümlerin kodlarını kastetmiştim...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    1 Mart 2018 Perşembe 11:57
  • //class
    
     class Class1
        {
        }
        public class Bilgi
        {
            int id { get; set; }
            public object tarih { get; internal set; }
            //Date tarih { get; set; }
            string belge { get; set; }
            decimal tutar { get; set; }
            
    
            public Bilgi(System.Data.DataRow dRow = null)
            {
                if(dRow != null)
                {
                    id = Convert.ToInt32(dRow[1]);
                    tarih = Convert.ToDateTime(dRow[0]);
                    belge = dRow[2].ToString();
                    tutar = Convert.ToDecimal(dRow[3]);
                }
    
    //program cs
    static class Program
        {
            public static Bilgi bilgi;
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form2());
            }
    //form1
     private void gridView1_DoubleClick(object sender, EventArgs e)
            {
                Program.bilgi = new Bilgi(gridView1.GetDataRow(gridView1.FocusedRowHandle));
                Form2 fr = new Form2();
                fr.Show();
    
    
            }
    
    //form 2
      private void Form2_Load(object sender, EventArgs e)
            {
                label1.Text = Program.bilgi.ToString();
                TxtUnvan.Text = Program.bilgi.ToString();
                TxtTarih.Text = Program.bilgi.ToString();
                Txttutar.Text = Program.bilgi.ToString();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form1 f2 = new Form1();
                f2.Show();
                Hide();
    
            
            }


    hocam ekteki gibi sıraladım ama, syg,
    • Düzenleyen canleveent 1 Mart 2018 Perşembe 12:11
    1 Mart 2018 Perşembe 12:10
  • class Bilgi içerisinde tarihi object olarak tanımlamışsınız onu DateTime yapın sorun kalmaz...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 1 Mart 2018 Perşembe 12:37
    • Yanıt İşaretini Geri Alan canleveent 1 Mart 2018 Perşembe 12:37
    • Yanıt Olarak İşaretleyen canleveent 1 Mart 2018 Perşembe 15:30
    1 Mart 2018 Perşembe 12:24
  • peri hocam veriler aşağıdaki gibi geliyr,

    bu neden olabilir,

    1 Mart 2018 Perşembe 12:39
  • // Hatalı kullanmışsınız...
    label1.Text = Program.bilgi.ToString();
    // Doğru kullanım...
    label1.Text = Program.bilgi.id.ToString();


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 1 Mart 2018 Perşembe 15:30
    1 Mart 2018 Perşembe 13:44
  • Evet Haklısınız,

    ama yine sürekli form açılarak devam ediyor,

    asıl istediğim,

    prg. çalıştırıldığında,

    form2 ana form olarak açılıyor. bunun üzerinden buton ile form1'i açıyoruz. sonra da gridviev den satır seçilince form1 kapanmıyor, ayrıca form2 yeniden açılıyor.

    ben buton ile form1 açıldığında satır seçilince verilerin form2 ye gitmesini ve form1 i kapatmasını istiyorum,

    bunu ne denedim se yapamadım,

    umarım anlata bildim,

    bizamet bu konuda da bana yardımcı olabilir misiniz. yani benim form2 ana form,


    şu ana kadar size çok zahmet verdim,

    ama inanın buna çok ugraştım, çözüm bulamadım,

    zahmetlerinize çok tşk ederim,

    • Düzenleyen canleveent 1 Mart 2018 Perşembe 14:40
    1 Mart 2018 Perşembe 14:38
  • // Projenize bir class ekleyin.!.
    public class Bilgi
    {
        int id { get; set; }
        string unvan { get; set; }
        DateTime tarih { get; set; }
        Decimal tutar { get; set; }
    
        public Bilgi(DataRow dRow = null)
        {
            if (dRow != null)
            {
                id = Convert.ToInt32(dRow[2]);
                unvan = dRow[1].ToString();
                tarih = Convert.ToDateTime(dRow[0]);
                tutar = Convert.ToDecimal(dRow[3]);
            }
        }
    }
    
    //program.cs dosyasında,
    public static Bilgi bilgi;
    
    //form1 kodlar,
            private void gridView1_DoubleClick(object sender, EventArgs e)
            {
                Program.bilgi = new Bilgi( gridView1.GetDataRow(gridView1.FocusedRowHandle));
                Form2 fr = new Form2();
                fr.Show();
            }
    
    // form2 kodlar,
    
            private void Form2_Load(object sender, EventArgs e)
            {
                BilgiAl();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form1 f1 = new Form1();
                f1.ShowDialog();
                BilgiAl();
            }
    
            private void BilgiAl()
            {
                label1.Text = Program.bilgi.id.ToString();
                TxtUnvan.Text = Program.bilgi.unvan;
                TxtTarih.Text = Program.bilgi.tarih.ToString("dd.MM.yyyy HH:mm");
                TxtTutar.Text = Program.bilgi.tutar.ToString();
            }
    Bu kodları değiştirmeden, ilgili bölümlerde kullanın...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 2 Mart 2018 Cuma 07:54
    1 Mart 2018 Perşembe 17:21
  • hocam mrb,

    diğer bir formdaki işlemde,

    verilerde "char" olanlar var, bunları class içinde ToChar yazdım, hata veriyor.

    char değerleri nasıl yazabiliriz,

    2 Mart 2018 Cuma 12:31
  • ToChar() ile atama yapabilmek için değişkenin de char olarak tanımlanmış olması gerekir...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    2 Mart 2018 Cuma 13:01
  • Tanımı string, atamayı da ToString() yapın.

    O alan 11 haneli metin...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 2 Mart 2018 Cuma 14:18
    2 Mart 2018 Cuma 13:30
  • dRow dizisinde 12'den az eleman var.

    Yani dRow[11] yok...


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 2 Mart 2018 Cuma 15:19
    2 Mart 2018 Cuma 14:27
  • evet, alan 39 tane ama dizine sıgmadığı için görmek istediğimi seçmiştim

    bunu başka türlü aşma şansı olabilir mi hocam,

    bu konuda ne önerirsiniz,

    2 Mart 2018 Cuma 15:01
  • dizine tümünü ekledim,

    istedim gibi çalıştı.

    uğraşım boşa gitmemiş, :)

    ama dizinde sutunlar nokta nokta, bunu nasıl ederim bilemiyorum,

    2 Mart 2018 Cuma 15:06
  • size çoook tşk ederim,

    2 Mart 2018 Cuma 15:08
  • hocam veri seçmeden köşeden kapatıp çıkarken aşağıdaki hata geliyor,

    bu neden kaynaklanır

    3 Mart 2018 Cumartesi 13:43
  • private void BilgiAl()
    {
        if (Program.Bilgi != null)
        {
            label1.Text = Program.bilgi.id.ToString();
            TxtUnvan.Text = Program.bilgi.unvan;
            TxtTarih.Text = Program.bilgi.tarih.ToString("dd.MM.yyyy HH:mm");
            TxtTutar.Text = Program.bilgi.tutar.ToString();
        }
    }


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen canleveent 3 Mart 2018 Cumartesi 14:08
    3 Mart 2018 Cumartesi 13:50
  • tşkler
    3 Mart 2018 Cumartesi 14:08