1. sayfa
| kolay bir yolu vardı galiba bende tam bilmiyorum ama veritabanına kayıt yöntemini deneyebilirsin. belki çok kasar ama çözemezsen denersin. |
| .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... |
|
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. |
|
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 ;) |
|
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 |
|
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... |
|
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... |
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... |
![]() |
1. sayfa
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 Ol Şimdi DeğilÜ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.