Form1'den Form2'ye Veri Yollayamıyorum [Çözüldü]
-
iyi geceler. Bitirme projemle alakaı bir sorunum var.
Form1'deki combobox'ta seçili öğeyi Form2'ye yollamam lazım.
Basit olarak Form2'de Form1 objesi oluşturuyorum , obje.comboBox1.SelectedItem.ToString() yemiyor.
Index olarak bakıyorum sürekli -1 geliyor ama kırmızı nokta ile baktığımda form1'de aslında veriler var lakin form2'ye geçerken veri kayboluyor.
Bir türlü üstesinden gelemedim. internete de baktım ama nafile. Teamviewer var halledebilecek birisi var mıdır bu saatte ?
GodKlaus tarafından 20/Eki/18 01:34 tarihinde düzenlenmiştir -
Suan C# yüklü değil ama indexten gitmeni tavsiye ederim. -1 bişey seçilmediğinde oluyor. Form1deki object static ve public mi ki nasi form2 den kafana göre erisiyorsun? Form2 de bir Form1 daha oluşturursan o yeni bir Form1 olur yani programin başinda açilandan farkli dolayısıyla comboboxta bişey seçilmemiş ve index -1 olur. Dolayısıyla veri aktarmanin daha düzgün bir yolunu kullan Form2 constructorünü değiştirip açilişta passlayabilirsin indexi mesela yada public static "global" bir variable fln koyabilirsin kötü programcilik sıkıntı değil diyorsan. En basit yöntemleri söyledim.
-
j4x bunu yazdı
Suan C# yüklü değil ama indexten gitmeni tavsiye ederim. -1 bişey seçilmediğinde oluyor. Form1deki object static ve public mi ki nasi form2 den kafana göre erisiyorsun? Form2 de bir Form1 daha oluşturursan o yeni bir Form1 olur yani programin başinda açilandan farkli dolayısıyla comboboxta bişey seçilmemiş ve index -1 olur. Dolayısıyla veri aktarmanin daha düzgün bir yolunu kullan Form2 constructorünü değiştirip açilişta passlayabilirsin indexi mesela yada public static "global" bir variable fln koyabilirsin kötü programcilik sıkıntı değil diyorsan. En basit yöntemleri söyledim.
kötü programcılık hiçbir şekilde problem değil.
Bende aynı sorunu düşündüm. Form2'de form1 objesi oluşturuyorum ve bütün değerler default olarak geliyor. Bunun üzerinden gelemedim bende.
Ayrıca combobox'ların ikiside public olarak tanımlandı.
Form2'de Form1 frm1 = new Form1(); şeklinde tanımladım.
frm1.combobox1.selectedItem.tostring(); diyince işte null geliyor. SelectedIndex diyince de -1 veriyor.Edit : Oldu bee. Sonunda hocamında yardımıyla başardım.
Global değişken diye birşey varmış. Bunun için Globals adında bir class açtım ve içerisine public static <isim>; şeklinde değişkenker tanımladım.
Globals bir class olduğu ve değişkenler de static türünde olduğu için hiçbir obje tanımlaması duymadan istediğim gibi eriştim. -
Hocam söyledim ya o şekilde yapamazsın. Açiliştaki Form1 farkli bir object, senin yarattığın Form1 farkli bir object. Sen ilkinde comboboxtan seçim yaptın. İkincisi gözükmüyor zaten default olarak -1 değeri var. Herşey olması gerektiği gibi yani. Sen dediğim iki yöntemden birini kullan yada setComboVal gibi bişey ekle Form2 ye form1 den form2 yi açarken o fonksiyonu da çağırıp comboboxun text değerini parametre olarak geç.
-
Sağ elinle sol kulağı tutmuşsun hocam
@j4x in dediği gibi. Sen seçtiğindeki form farklı bir obje, Form2 de initialize olan farklı bir obje. new Form1() diyerek yeniden oluşturuyorsun. Adım adım yazayım;
Form2 de global alanda public string selectedValue; diye bir değişken tanımla
Form1 de Form2 i initialize ederken
Form2 form=new Form2();
form.selectedValue=comboBox1.SelectedItem.ToString();
form.Show();
Akabinde açılan formda selectedValue değişkenini kullanabilirsin