Form1 de bulunan datagridview tablosundaki bir satırın id değerini elimde tutup bunu Form2 de kullanmak istiyorum nasıl yapabilirim ?
yapmak istediğim;
form1 deki datagridview tablosuna sql den kitap listesi çektiriyorum (id-yazar-kitapadı-sayfasayısı-puan) hemen altında puan ver diye bir buton var butona basıldığında Form2 açılıyor ve 1-5 arası puanlar var. Puana tıklanıldığında Form1 de seçili olan kitabın puan değerinin değişmesi lazım
c# formlar arası değer taşıma
7
●146
- 26-05-2020, 23:20:331. Public bir sınıf oluşturup içerisinde public bir değişken oluşturup değeri bu değişkene aktarabilir ve istediğiniz formdan bu değere ulaşabilirsiniz.
2. Yada form içerisinde public erişim belirtecine sahip bir field oluşturun, ardından ulaşmak istediğiniz formdan var form = Application.OpenForms["formAdi"]; var degisken = form.DegiskenIsmi;
şeklinde bir kod ile değere ulaşabilirsiniz. - 26-05-2020, 23:20:34Öncelikle DataGridView componentinden almak istediğiniz veriyi alıp oluşturduğunuz bir değişkene set ediyorsunuz.Daha sonra Form2 içerisindeki constructor metoda gönderebilir Form2 içerisinde işleyebilirsiniz veya Form2 içerisinde bir değişken oluşturursunuz. Form1 üzerinden
Form2 frm2= new Form2();
frm2.degisken=id;
yapabilirsiniz.
İlk yok ise
Form2 frm2= new Form2(id);
şeklinde gönderirsiniz yalnız bunu yapabilmeniz için Form2 sınıfında bir yapıcı metodunuz olması gerekir.
public Form2(int id ){
//etc
} - 26-05-2020, 23:22:45en basit yaklaşımı ile bir classa public değişken yazarsın globalde bütün formlarda kullanabilirsin.
ikinci bir yöntem ise
private void button1_Click(object sender, EventArgs e){ Form2 frm2 = new Form2(textBox1.Text); frm2.Show(); } public Form2(string*r10) { InitializeComponent(); textBox1.Text =*r10; }gibi yapabilirsin
kusura bakma kod yanyana oldu ama nasıl oldu forumda cevap yazarken anlamadım. - 26-05-2020, 23:25:21Bir butona event ekleyerek böyle taşıyabilirsin. Event yerine tüm işlemleri bir metod aracılığı ile de yapabilirsin. Kısaca mantık bu şekilde.
// DataGridView Id değerini değişkene atama Int tasinacakDeger= Convert.ToInt32(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value); // Event aracılığıyla yeni formu açma ve değer gönderme private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(tasinacakDeger); frm2.Show(); } // Yeni forma değeri alma public Form2(int tasinacakDeger) { InitializeComponent(); int tasinanDeger = tasinacakDeger; } - 26-05-2020, 23:36:50hocammaliyassi adlı üyeden alıntı: mesajı görüntüle
int tasinacakDeger = Convert.ToInt32(dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value);
bu kodu form un load ına ekliyorum fakat daha sonra button1_click eventinde çağıramıyorum başka biryere mi eklemem gerekiyor ? - 26-05-2020, 23:40:51Değişkeni load eventinin dışında tanımlamalısınız.Huskar adlı üyeden alıntı: mesajı görüntüle
- 26-05-2020, 23:52:40tamam hocam o kısmı hallettim fakat şöyle bir uyarı geldiibrahimcakal adlı üyeden alıntı: mesajı görüntüle

edit//
benim hatammış kodu 2ayrı yere yapıştırmışım teşekkürler hocam çok sağolun
