C# Ta Formlar Arası Veri Aktarımı (Yardım)
-
GrN bunu yazdı:
-----------------------------
SharpShooter bunu yazdı:
-----------------------------
static değişken tanımlamak, kod yazarken yapılacak en son şeylerden biridir.
neden derseniz ?
static veriler ram'de tutulur. Şöyle ki bir web uygulamanız var. Static olarak etiketlenmiş bir değişkenininz;
static int urunNo = 0;
1 kullanıcı geldi; bir ürüne tıkladı sizde kod tarafında,static olarak işaretlenmiş urunNo değişkenine 5 atadınız diyelim. Ardından başka bir müşteri geldi o da bi ürüne tıkladı çat, urunNo 8 oldu. şimdi 5 nolu ürüne tıklayan adam alışveriş yap diyince , sizin programınız urunNo değişkenine bakarsa, orada 5 değil 8 görücek ve 8 nolu ürünü alacak.
Windows tarafında pek bir sıkıntı oluşturacağını sanmıyorum, eğer ana server üzerinden bir kontrol yoksa
static değişken falan görünce aklıma geldi , küçük bi bilgi olsun dedim :)
-----------------------------static yerel degiskenler, global degiskenler ve karakter katarlari exe kodun data bolum'unde tutulurlar. yerel degiskenler ise fonksiyona girilince olusturulur ve fonksiyondan cikildiginda yok edililirler. yerel degiskenlerin olusturuldugu bolge ise exe kodun stack kismidir. exe kod genelde uc kisma ayrilir. code, data, stack...
microsoftun vc++ derleyicisi bi kac bolum daha olusturur. code, bss, stack, data...
bu kisa bilgiden sonra bi kod blogu[fonksiyon] icerisinde static bir degisken yarattigimizda, aslinda global bir degisken yaratiriz ama global isim alanini kirletmeyiz. mantiksal olarak iliskisi o fonksiyondandir. siniflarin uye elemanlari olarak static degiskenler yarattigimizda da ayni sey gecerlidir. bu yuzden sinif ismiyle ( nesne olusturmadan ), sinifin uye elemanina ulasabilmek icin o elemanin static olarak tanimlanmasi gerekiyor. Bellekte hazir bi durumda olucak ki, biz ona ulasabilelim.
neden bunlari anlattim biliyomusun. cunku static degiskenler kullanilabilinir bisey :)
-----------------------------kullanılamaz dediğimi hatırlamıyorum, öyle bir şey de dememişim zaten :)
ben web uygulamalarını kasteddiğimide anlamayacak kadar bilgi birikimin olmadığını farketmemişim, belirtmeliymişim demek ki :)
-
ntxsoft bunu yazdı:
-----------------------------
ben genelde static kullanıyorum, ama arkadaşlarınn dediği gibi dikkatli kullanmalısıınız. karışıklık olabilir.
public Form1(string x, inty)
diye tanımlarsanız, bu şekilde de parametre yollayabilirsiniz.
Form1 myform = new Form ("test",1);
ve son olarak formu göstermek için
myform.Show();
yapmalısınız.
-----------------------------Doğru çözüm budur.
Bende bunu yazacaktım ancak ki geç kalmışım sanırım :)
-
SharpShooter bunu yazdı:
-----------------------------
GrN bunu yazdı:
-----------------------------
SharpShooter bunu yazdı:
-----------------------------
static değişken tanımlamak, kod yazarken yapılacak en son şeylerden biridir.
neden derseniz ?
static veriler ram'de tutulur. Şöyle ki bir web uygulamanız var. Static olarak etiketlenmiş bir değişkenininz;
static int urunNo = 0;
1 kullanıcı geldi; bir ürüne tıkladı sizde kod tarafında,static olarak işaretlenmiş urunNo değişkenine 5 atadınız diyelim. Ardından başka bir müşteri geldi o da bi ürüne tıkladı çat, urunNo 8 oldu. şimdi 5 nolu ürüne tıklayan adam alışveriş yap diyince , sizin programınız urunNo değişkenine bakarsa, orada 5 değil 8 görücek ve 8 nolu ürünü alacak.
Windows tarafında pek bir sıkıntı oluşturacağını sanmıyorum, eğer ana server üzerinden bir kontrol yoksa
static değişken falan görünce aklıma geldi , küçük bi bilgi olsun dedim :)
-----------------------------static yerel degiskenler, global degiskenler ve karakter katarlari exe kodun data bolum'unde tutulurlar. yerel degiskenler ise fonksiyona girilince olusturulur ve fonksiyondan cikildiginda yok edililirler. yerel degiskenlerin olusturuldugu bolge ise exe kodun stack kismidir. exe kod genelde uc kisma ayrilir. code, data, stack...
microsoftun vc++ derleyicisi bi kac bolum daha olusturur. code, bss, stack, data...
bu kisa bilgiden sonra bi kod blogu[fonksiyon] icerisinde static bir degisken yarattigimizda, aslinda global bir degisken yaratiriz ama global isim alanini kirletmeyiz. mantiksal olarak iliskisi o fonksiyondandir. siniflarin uye elemanlari olarak static degiskenler yarattigimizda da ayni sey gecerlidir. bu yuzden sinif ismiyle ( nesne olusturmadan ), sinifin uye elemanina ulasabilmek icin o elemanin static olarak tanimlanmasi gerekiyor. Bellekte hazir bi durumda olucak ki, biz ona ulasabilelim.
neden bunlari anlattim biliyomusun. cunku static degiskenler kullanilabilinir bisey :)
-----------------------------kullanılamaz dediğimi hatırlamıyorum, öyle bir şey de dememişim zaten :)
ben web uygulamalarını kasteddiğimide anlamayacak kadar bilgi birikimin olmadığını farketmemişim, belirtmeliymişim demek ki :)
-----------------------------sen, galiba beni yanlis anladin. amacim biseyler paylasmakti :)
web uygulamalarida olsa [ki ben, web uygulamalari ile ilgilenmem] 'kod yazarken en son kullanilicak...' diye yaklasinca olaya, bende static degiskenlerin nasil ve nerede olustugunu anlattim. ;)
-
Form1 den yazılan yazıyı Form 2 de göstermek için
Form2 frm2 = null;
void Form1_Load()
{
frm2 = new form2();
frm2.show();
}
void Button1_Click()
{
frm2.Controls["TextBox1"].Text = TextBoxt1.Text;
}
//Tam tersi için ana form Form1 dersek
form1_Load()
{
Form2 frm2 = new Form(this);
frm2.show();
}
// Form2 de main metod da şunu yazıoruz
Form1 frm1 = null;
public Form2(Form1 frm)
{
frm1 = frm;
InitializeComponents();
}
void Form2nin_Button1_Click()
{
textbox1.text = frm1.Controls["Textox1"].Text;
}
Forumda kod yazmak nekadar zormuş :)
-
"CmdExE" in yazdıkları işine yaramıştır zaten ama bende benzer bi yöntem önerebilirim
Form1 ve Form2 olsn
Form2 için :
Publik Form1 frm;
Form1 için :
buton event'i içine:
Form2 frm2 = new Form2();
frm2.frm=This;
frm2.show();
Form2 bu şekilde açıldıktan sonra Form1 üzerinde hangi öge istersen eğer 'Modifiers' propertisi 'Private' değilse direk karşına çıkacaktır ve sanki kendi formundaymış gibi yönetebilirsin.
yani örneğin sonradan açılan Form2 için :
herhangi bi event içinde :
frm.TextBox1.visible=false;
dediğimiz zaman Form1 üzerinde direk çalışmış olur.
bundaki mantık zaten ram üzerindeki stack alanda oluşturulmuş olan Form1'i bir paylaşımlı değişkene atadıktan sonra bu değişkenin değerini vererek ram'de bulunan Form1'e ulaşmış olursun ve istediğin gibi kullanabilirsin.
Aynı mantık tam tersi içinde geçerlidir.Ama daha kolay bi nokta ikinci form açılırken gerekli parametreler gönderilebilr böylece o parametrelerle beraber açılacaktır.