DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
Arama butonu
Bu konudaki kullanıcılar: 1 misafir
10
Cevap
4355
Tıklama
0
Öne Çıkarma
VB.Net ile bir formdan diğerine değişken aktarımı.(COK KOLAY GALİBA AMA OLMADI)
A
19 yıl (797 mesaj)
Yüzbaşı
Konu Sahibi

Örneğin a formunda numara diye bir değişken var, bunu b formunda kullanmak istiyorum.Nasıl yapabilirim. Eskiden VB 6.0 da;



form2.txtno=form1.txtno seklinde kullanabiliyorduk ama .net te bunu yapamıyorum nedense. Bende yeni bir class hazırladım ve property kullanarak bi özellik tanımlayıp değişkeni o sekilde aktarmayı denedim ama bu seferde form2 acılınca değişken 0 degerini alıyor. Cok basit bi soru ama yapadım bi örnek yazan olursa cok sevinirim...

Bu arada ben classı 2. formda tanımlarken New ile tanımlıyorum yani ;

Dim sinifim as new anasinif
txtno.text=sinifim.numara

şeklinde.New sözcügü burda değişkeni sıfırlamada bi etkisi olurmu diye düşündüm ve kaldırdım yani şöle yaptım;

dim sinifim as anasinif
txtno.text=sinifim.numara

bu seferde değişkeni görmezden geldi

Bana birazda bu farkı anlatırsanız güzel olur :)

Herkese kolay gelsin....

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



C
19 yıl (198 mesaj)
Teğmen

kolay bir yolu vardı galiba bende tam bilmiyorum ama veritabanına kayıt yöntemini deneyebilirsin. belki çok kasar ama çözemezsen denersin.


Bu mesaja 1 cevap geldi.
E
19 yıl (2945 mesaj)
Binbaşı

module de değişken tanımlayıp ordan aktarsan olmaz mı??


Bu mesaja 3 cevap geldi.
A
19 yıl (797 mesaj)
Yüzbaşı
Konu Sahibi

.NET te module diye bişi yok işte VB 6.0 da dediğin gibi oluyordu. Veritabanı olayı çoookkk gereksiz olur. zaten programın kendisi veritabanı programı. Benim bildiğim kadarıyla Constraction olarak bir değişken tanımlayıp form 2 acılırken ona parametre verebiliyorduk. Ama nasıl yapıldıgını tam olarak bilmiyorum...



E
19 yıl (675 mesaj)
Yüzbaşı

Butun bunlar object orinteddan gelir. NEW ile bir objectin instance'nı alırsın, yani bir kopyasını. Dolaysıyla bos bir class elde edersin, diger formdan classa koydugun bilgiye ulasamazsın. Cunku diger formda da NEW ile bir kopya yaratmıssındır ve oraya girdigin bilgiler orada kalmıstır. Bu formda NEW ile yarattıgın kopya (instance) ile diger formdaki instance lar farklıdır. İçine ulasamam normal. NEW kullanmadan yapmaya calısıtgında hata alırsın cunku classı direkt kullanmaya calısıyosun demektir.

Sonucta bir formdaki bilgiyi ( değişken, class, formun kendisi vs..) baska forma aktarmak istiyorsan en kolay yontemi DEFAULT CONSTRUCTOR kullanmaktır.

Şimdi bunun için 1. formada form1deKullanilanDegisken seklinde bir string değişkeni olgudunu varsayalım.
2. formun koduna geliyorsun ve once bir değişken sonra da soyle bir sub yaratıyorsun: (default constructor)

Dim form2deKullanilacakDegisken as string
Sub NEW (degisken as string)
form2deKullanilacakDegisken = degisken
End SUB

daha sonra form1e gelip bu form 2 yi gosterdigin bolume geliyorsun: su sekilde duzenliuorsun onu:

Dim form as new Form2Adi(form1deKullanilanDegisken)
form.showdialog()


Bu sekilde form1de kullandıgın sitring bir degğişeni 2.forma aktarmıstın. Benzer sekilde bu integer, decimal gibi basit değişkenler olabilecegi gibi dataset, class, form seklinde objectler de olabilir.

Kolay gelsin, takılırsan ayrıntılı yaz bakalım.


Bu mesaja 1 cevap geldi.
A
19 yıl (797 mesaj)
Yüzbaşı
Konu Sahibi

Eywallah arkadasım cok sagolasın aradıgım sey tam olarak buydu. Default Constuructor yani.
Ama şimdi denedim sorun çıktı.

Kodlarım şöyle;

1.FORMDA

Dim sahipno As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

sahipno = Convert.ToInt32(txtsahipno.Text)

Dim frmemlak As New frmemlak(sahipno)
frmemlak.ShowDialog()

End Sub


2.FORMDA

Dim sahipno As Integer

Sub New(ByVal degisken As Integer)
sahipno = degisken
End Sub

Şimdi ben gelen degiskeni formun load eventinde msgbox ile görüntüleyebiliyorum. Ama textbox1.text=sahipno.tostring yapınca, şöyle bir hata veriyor;

An unhandled exception of type 'System.NullReferenceException' occurred in Emlak.exe

Additional information: Object reference not set to an instance of an object.

Nerde yanlış veya eksik bişi yaptıgımı hala anlayamadım...

Bu arada msn den yardımlasmak istersen pm ile yolla msn ini ;)





< Bu mesaj bu kişi tarafından değiştirildi aydinunlu -- 15 Eylül 2006; 4:33:08 >
Bu mesaja 1 cevap geldi.
A
19 yıl (797 mesaj)
Yüzbaşı
Konu Sahibi

Dediğim gibi hata hala devam ediyor. Kendi yaptıgım ufak bir deneme programını veriyorum linkte hatanın ne oldugunu bulup düzeltip veya direk calisan ufak bi örnek yaparsanız sevinirim...

http://www.hemenp&yl&s.com/download/1572832/Default_Constructor_Deneme.rar.html


Bu mesaja 1 cevap geldi.
E
19 yıl (675 mesaj)
Yüzbaşı

Constructorın icine su satırı eklersen sorunun duzelir:

Sub New(ByVal aAs Integer)
Me.InitializeComponent()
degisken = a
End Sub

Bazı seyleri visual studio kendisi halleder, bazılarını da senin yapman gerekir. Hersey tamamen benim kontrolumde olsun istersen ki dogrusu budur OPTION STRICT = ON yapmanı tavsiye ederim ve her projende bu sekilde calismani oneririm. Cok yol gosterir ve herseyi senin yapmani bekler. Option Strict default olarak ON yapmak için, TOOLS - OPTIONS - Projects And Solutions - VB Defaults - OPTION STRICT = ON

Kolay gelsin...


Bu mesaja 1 cevap geldi.
A
19 yıl (797 mesaj)
Yüzbaşı
Konu Sahibi

Me.InitializeComponent()
bu satır düzeltti sorunumu su anda ufak deneme programımda bi sorun yok. yarın ayık kafayla bide ana programda denerim :) eheheh bi sekilde hallederim artık. cok tesekkür ederim...Kolay gelsin...



A
19 yıl (797 mesaj)
Yüzbaşı
Konu Sahibi

quote:

Orjinalden alıntı: ethan hunt

module de değişken tanımlayıp ordan aktarsan olmaz mı??


Ya arkadaşım sendende özür dilerim :) module varmış sadece işte benim dikkatsizliğim biraz. Module ün içinde public olarak bi değişken tanımlarsak her formdan rahatlıkla erişebiliyoruz. Ben add item menusunden baktım ama ilk baktıgımda dikkatsizliğim yüzünden görmemişim module oldugunu ;) 2 parametre göndermek istediğim zaman default constructorda nedense hata ile karsılastım, bende module yolunu tercih ettim bu seferlik. Yardımcı olan herkese tekrar tesekkür ederim...


Bu mesaja 1 cevap geldi.
E
19 yıl (2945 mesaj)
Binbaşı

quote:

Orjinalden alıntı: aydinunlu



quote:

Orjinalden alıntı: ethan hunt

module de değişken tanımlayıp ordan aktarsan olmaz mı??


Ya arkadaşım sendende özür dilerim :) module varmış sadece işte benim dikkatsizliğim biraz. Module ün içinde public olarak bi değişken tanımlarsak her formdan rahatlıkla erişebiliyoruz. Ben add item menusunden baktım ama ilk baktıgımda dikkatsizliğim yüzünden görmemişim module oldugunu ;) 2 parametre göndermek istediğim zaman default constructorda nedense hata ile karsılastım, bende module yolunu tercih ettim bu seferlik. Yardımcı olan herkese tekrar tesekkür ederim...







DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.