Formlar Arası Geçiş ve Formlar Arası Veri Taşıma İşlemleri Nasıl Yapılır?

Bu yazımda Csharpta formlar arası geçiş ve veri taşıma işlemlerine ilişkin örnek yapalım. Bir form açıldığında projemde yer alan diğer formları açma k istediğimde nasıl kod yazmalıyım? Gelin bunu örnekleyelim. Windows form projeme iki tane windows form ekliyorum. Form1 ve Form2 olarak isimlerini bıraktım. Form1’e bir adet buton ekliyorum. Bu butona basınca Form2 açılmasını sağlayacağım. Butonun click eventinde aşağıdaki kodları yazıyorum:

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

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

        private void button1_Click(object sender, EventArgs e)
        {
            //Diğer formumu açabilmem için o formun classından nesne türetiyorum.
            Form2 frm = new Form2();
            //Show metodu ile nesne olarak türettiğim ikinci formumu açıyorum.
            frm.Show();
            //Bu mevcut formu kapatıyorum.
            this.Hide();

        }
    }
}

Burada Form2’yi açabilmem için öncelikle Form2 classından bir nesne üretmem lazım. Frm adında bir nesne ürettim. Bu nesnemin Show metodu ile ikinci formun gösterilmesini sağlıyorum. Hide ile mevcut formumu gizliyorum.

Şimdi de buna ilişkin olarak bir başka örnek yapalım. Bu sefer formlar arası veri taşıma işlemi gerçekleştirelim. Şöyle bir örnek olsun. Form1’de Textbox üzerine yazdığım yazıyı, Form2’de bir Label üzerinde gösterelim. Yine projemde iki adet formum olacak, Form1 ve Form2. Form1 üzerinde bir textbox ve bir buton olacak. Form2 üzerinde ise sadece bir Label olacak. Hadi kodlayalım;

Form1.cs kodlarım:

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

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

        private void button1_Click(object sender, EventArgs e)
        {
            //Diğer formumu açabilmem için o formun classından nesne türetiyorum.
            Form2 frm = new Form2();
            //Daha sonra textboxa yazdığım metni ikinci formumdaki değişkenime atıyorum.
            frm.mesaj = textBox1.Text;
            //Show metodu ile nesne olarak türettiğim ikinci formumu açıyorum.
            frm.Show();     

            //Bu mevcut formu kapatıyorum.
            this.Hide();          

        }
    }
}


Form2.cs kodlarım:

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

namespace FormlarArasiGecisVeVeriTasima
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        //Bu değişkene mesajımı atacağım. Bunu ayrıca form1 tarafından erişilsin diye global olarak ve public tanımladım.
        public string mesaj;
        private void Form2_Load(object sender, EventArgs e)
        {
            //yazdırma işlevim.
            label1.Text = mesaj;
        }
    }
}

Öncelikle Form2’den bir nesne türettim. Bu arada Form2 üzerinde global ve public bir string değişken tanımladım. Bu değişkene Form1’de tanımladığım frm nesnesi üzerinden erişebiliyorum. Textboxa girdiğim metni değişkenime aktardım. Ve Form2 gösterme işlemlerini yaptım.

Son bir örnekle yazımızı bitirelim. Yine windows form projemde iki adet formum var, Form1 ve Form2. Form1’e 5 tane textbox ekledim ve bir adet buton ekledim. Form2’ye ise bir tane combobox ekledim. Amacım şu, form1 textboxlara girilen 5 adet metnin, form2’de yer alan textboxa aktarılmadı. Mantık aslında bir önceki örneğimle aynı, label yerine burada combobox kullanacağım. Hadi kodlayalım:

Form1.cs

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

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

        private void button1_Click(object sender, EventArgs e)
        {
            //Diğer formumu açabilmem için o formun classından nesne türetiyorum.
            Form2 frm = new Form2();
            //Daha sonra textboxlara yazdığım metni ikinci formumdaki değişkenlerime atıyorum.
            frm.ad1 = textBox1.Text;
            frm.ad2 = textBox2.Text;
            frm.ad3 = textBox3.Text;
            frm.ad4 = textBox4.Text;
            frm.ad5 = textBox5.Text;

            //Show metodu ile nesne olarak türettiğim ikinci formumu açıyorum.
            frm.Show();     

            //Bu mevcut formu kapatıyorum.
            this.Hide();          

        }
    }
}

Form2.cs

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

namespace FormlarArasiGecisVeVeriTasima
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        //Değişkenlere isimleri atacağım. Değişkenlere, form1 tarafından erişilsin diye global olarak ve public tanımladım.
        public string ad1, ad2, ad3, ad4, ad5;
        private void Form2_Load(object sender, EventArgs e)
        {
            //yazdırma işlevim. Items.add metodu ile ekleme işlemimi yaptım.
            comboBox1.Items.Add(ad1);
            comboBox1.Items.Add(ad2);
            comboBox1.Items.Add(ad3);
            comboBox1.Items.Add(ad4);
            comboBox1.Items.Add(ad5);


        }
    }
}


Öncelikle Form2’den bir nesne türettim. Bu arada Form2 üzerinde global ve public bir string değişkenlerimi tanımladım. Bu değişkenlere Form1’de tanımladığım frm nesnesi üzerinden erişebiliyorum. Textboxlara girdiğim metni değişkenlerime aktardım. Ve Form2 gösterme işlemlerini yaptım.Comboboxa eklerken combobox aracının Items.Add metodunu kullanıyoruz.

Şimdilik bu kadar 😊

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir