İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. SDN Forum
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C# Formlar arası bilgi geçişi

Immune09.12.201011 cevap10.112 görüntüleme
#1
Öncelikle merhaba. Benzer konular var mıydı tam bakamadım ancak biraz aciliyeti var durumun. Windows Form uygulamaları üzerine bir ödevim var. 2 farklı form üzerinde çalışıyorum ve 1. formda bir butona tıklandığında 2. form açılacak. Buraya kadar tamam fakat 2. form üzerinde bulunan listbox'a 1. formda tanımladığım dizinin içerisindeki değerleri aktarmam gerekiyor. Burada tıkanıyorum. Bu konuda bilgisi olanlardan yardım bekliyorum. Şimdiden teşekkürler.
Cevaplar
#2
Aktaracağınız verinin string olduğunu düşünerekten (siz iztediğinizi aktarabilirsiniz) şöyle bir cevap verebilirim. Formun initializion methoduna bir requirement koyarak sorunu aşarsınız. Yani form 2 nin :
public Form2()
{
InitializeComponent();
}
Olarak gelen methodunu:
public Form2(string deneme)
{
InitializeComponent();
}
Olarak düzenlerseniz form classını yaratırken forma bir deneme'ye atanmak üzere bir string atamak zorunda kalırsınız ve form açılırken o veri form 2'ye gönderilmiş olur. Daha sonra o veriyi form2 class'ı içince bir public property'e göndererek istediğiniz gibi kullanabilirsiniz...
Immune Konuyu açan
#3
Fakat bu sefer de şu satırda şöyle bir hata alıyorum.

#4
Form2'yi yaratırken verini girmemişsin ama :) Böyle hata alman normal :)

Az önceki örneğe bakaraktan şöyle yaratman gerekirdi formu:
Form2 frm = new Form2("string verim");
frm.Show();
Form2'de string istiyosun ama yaratırken veriyi vermiyosan onu yaratamazsın...

Hata alman da ondan kaynaklanıyor.

Neyi istiyorsan yaratırken vermen gerekir. String ise string, int ise int, float ise float...
Immune Konuyu açan
#5
Anladım fakat pek iyi değilim bu konuda :). Form 2'yi yaratırken diziyi veremiyorum mesela. Yani int[] A şeklinde bir dizi tanımlamışım ve parantez içine bunu böyle yazdığımda hata alıyorum. Sadece (A) şeklinde yazınca hata vermiyor ama tabi böyle olunca da Form 2'de A dizisini göremiyorum. listBox1.Icons.Add() fonksiyonuyla A dizisinin tüm elemanlarını yazmam gerekiyor.
#6
listeye çevirip de gönderebilirsin verilerini istersen. Göndermek istediğin veri tipi nedir? Ona göre bir örnek vereyim sana.
Immune Konuyu açan
#7
Ya durum aslında şu: Bir sayının çarpanlarını bulup bunları 2. açılan formun listbox'ında görüntülemek amaç. Ben de bunları diziye atayarak daha iyi yaparım diye düşündüm. Daha basit bir yöntemi varsa o da olabilir ancak bu şekilde olursa kodu da baştan değiştirmem gerekmez.
#8
int tipinde bir array veri de gönderebilirsin bir sıkıntı yaratmaz. şöyle ki;

Form2 de requirement olarak arrayimizi tanımlıyoruz ve bir public property'e verileri gönderiyoruz:
public Form2(int[] deneme)
{
InitializeComponent();
verilerim = deneme;
}

public int[] verilerim {get; set;}
Daha sonra ilk formdan da verilerimizi formu yaratırken gönderiyoruz :
int[] sayilar = {0,1,2,3,4}; //ne olması gerekiyorsa

Form2 fmr = new Form2(sayilar);
fmr.Show();
Bu adımdan sonra form2 üzerinden verileri tanımladığımız verilerim property'si üzerinden okuyabilirsin...

Not : Veri atanmamış bir array gönderemezsin.
Immune Konuyu açan
#9
Peki çok teşekkürler.
#10
İnşallah yardımcı olabilmişimdir :)
#11
Doğru anladıysam böylede çözebilirsin. form2'de listbox ekleyerek modifiers özelliğini public yap. Bununla uygulamada tüm formlardan listboxsa erişebilirsin. Sonrad da fom1'den diziyi FORM2' deki listboxsa ekleyebilirsin.
form1de çalışacak kodlar.
private void button3_Click(object sender, EventArgs e)
{
string [] sayilar = { "ali","veli","ahmet", "mehmet","ayşa" };
Form2 f = new Form2();
for (int i = 0; i < 5; i++)
{
f.listBox1.Items.Add("isim " + sayilar);
}
f.Show();
}
Immune Konuyu açan
#12
avarhan dedi: ↑
Doğru anladıysam böylede çözebilirsin. form2'de listbox ekleyerek modifiers özelliğini public yap. Bununla uygulamada tüm formlardan listboxsa erişebilirsin. Sonrad da fom1'den diziyi FORM2' deki listboxsa ekleyebilirsin.
form1de çalışacak kodlar.
private void button3_Click(object sender, EventArgs e)
{
string [] sayilar = { "ali","veli","ahmet", "mehmet","ayşa" };
Form2 f = new Form2();
for (int i = 0; i < 5; i++)
{
f.listBox1.Items.Add("isim " + sayilar);
}
f.Show();
}
Aynen ben de daha sonra böyle yaptım. :) Teşekkürler.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.

Reklam