1. sayfa
Gizlemek değil kapatmak istiyor. Eğer 2.Formun objesini 1.Formda yaratıp ondan sonrada 1. formdan çağırıyorsan ilk formu kapatamazsın, yapabileceğin tek şey gizlemek olur. |
Teşekkürler peki kapatma işlemini nasıl yapmalıyım? Olay şu. Elimde iki tane form var. Form1.cs(İlk), Form2(Son).cs Ben programımı Form2.cs ile başlatıyorum. Program.cs den başlangıç olarak Form2.cs yi gösterdim. Form2.cs de şu işlemi yapıyorum. Form1'i tanıtıp o form'a geçiş yapıyorum. Ama bu geçiş esnasında Form2.cs tamamen kapansın ve Form1.cs açılsın. Ben gizlemek istemiyorum. Ama ne yapmam gerektiğini tam olarak bilmiyorum. |
formların dispose metodları olur, ikinci formu göster, 1. formu dispose et. |
kcomeby 2.form'u 1.formda oluşturuyor dikkat edersen eğer 1.formu dispose ederse 2.formda kapanır. Programın bir main formu olacak ve diğer formları bu ana form üzerinden çağıracaksın bu kaçınılmaz. Şunu yapabilirsin, programın main formu olarak Form2'yi değil Form1'i göster, daha sonra Form1'in shown() metodunda form2'yi oluştur form1'i gizle ve form2.showdialog() ile çağır, form2'yi kapatırken dispose et, ve form2'den dönüşteki koda form1'i tekrar göster.
|
Program.cs içindeki kodlardır. using System; Ben şu satırı anlamadım. (form1 kısmı burada form1'e genel bir bool değişken tanımlayı o değişkeni form2 üzerinden değiştirerek form2'yi gösterip göstermiyeceğine karar verebilirsin). Bu satıra göre tam olarak ne yapmam gerekiyor? Rica etsem o kısmı gösterebilirmisiniz? Kodları yukarıdaki gibi derleyince "'Form1_Shown': cannot declare instance members in a static class" hatasını alıyorum. Bu arada sizin yazdığınız yazıda da şu kısmı anlamadım.
Kalın gösterdiğim yeri anlamadım. Ayrıca kapatırken dispose etme olayını şöyle mi yapacağım?(Olay doğru mu?) private void Form2_FormClosing(object sender, FormClosingEventArgs e) Teşekkürler. |
Hımm evet mevzuyu pek anlamamışsın. Form1.Shown event'i form1.cs'de olacak program.cs'de değil. Form1'i açıp properties'de event tab'ını seçersen orada shown eventini göreceksin zaten, ona çift tıkla o sana fonksiyonu oluşturur içine benim yazdığım kodları yaz. dispose işide this.dispose() şeklinde oluyor. |
Teşekkürler. Teknik olarak çalışıyor. Ama başka kodlar kullandığım için o işlemi sona bırakıcam. Aklıma takılan ufak bir sorun var. If ile kayıt defterine nasıl erişebilirim? Mesela kayıt defterinde Local Machine altında A adlı bir klasör var. Bu klasör içinde de deneme isimli bir key var. Değeride 12345 olsun. Ben diyorum ki Eğer Local Machine altında A adlı klasörün altında ismi deneme değeri 12345 olan bir girdi varsa şu işlemleri yap. Yada Eğer Local Machine altında A adlı bir klasör varsa şu işlemleri yap. Ben çok uğraştım ama yapamadım. Çıkmaz sokak gibi. Yapacağım uygulamada kullanıcı CheckBox'ları kullanarak ince ayar seçiyor. Ama uygulama kapanınca CheckBox'ların işareti gidiyor. Ben program açılışında girdinin ekli olup olmadığını kontrol ettirerek checkBox1.Checked=true; checkbox'ı işaretleyeceğim. Böylece kullanıcı hangi işlemleri yaptığı bilecek. Yapamadığım için alternatif yöntemleri düşündüm. Veritabanı ve ini dosyası kullanmayı düşündüm. Ama kullanıcı kendisi silebilir diye yapamadım. Acaba nasıl yapabilirim? |
Yanlış hatırlamıyorsam Microsoft.Win32 namespace'ini kullanman gerekiyor RegisteryKey rk= Registery.LocalMachine.CreateSubKey("Burada senin ayarların durduğu yeri göster");ile registerye erişecek nesneyi oluşturur rk.GetValue("ulaşmak istediğin key'in adı") ;fonksiyonu ilede okursun. rk.SetValue("key","değer"); ilede o registery key'ine yazarsın. var olup olmadığı kontrolünü Null'mı değilmi şeklinde yapabilirsin. |
Yok. Ne yazık ki olmadı. Çok denedim. Sanırım ini dosyalarına başvurmaya çalışacağım. Yardımınız ve ilginiz için teşekkür ederim. |
Form1.ActiveForm.Hide(); Form2 frm2 = new Form2(); frm2.ShowDialog(); |
aynısını diger formada yazman lazım ama bu şekilde sadece butana tıkladıgında duger formu cagırır eger x butanına bastıgındanda cıkmasını istiyorsan altına şunlarıda ekle Form1.ActiveForm.Hide(); Form2 frm2 = new Form4(); frm2.ShowDialog(); --> Form1 frm1 = new Form1(); frm1.Visible = true; <-- eğer form2 ye başka bir deger (mesela kullanıcı adını atacaksan) yukardaki koda şunuda eklemelisin ama unutmamalıyız ki textbox3 ve textbox6 Private değil Public olmalı.... Form1.ActiveForm.Hide(); Form2 frm2 = new Form4(); --> frm2.textBox6.Text = textBox3.Text.ToString(); <-- frm2.ShowDialog(); Form1 frm1 = new Form1(); frm1.Visible = true; |
Teşekürler :D |
Arkadaşım Form2 nin Formclose olayına form2yi içine attıgın değişkeni sonlandıracaksın. frm2.close(); |
KARDEŞ BUNLARIN HEPSİ BOŞ FAZLALIK BİLGİLER AMA BEN VERİM SANA FORM1 FRM =NEW FORM2(); FRM.SHOW(); DEDİN GEÇİŞ YAPTIN HEMEN ALTNADA THİS.HİDE(); YAZDIGIN ZAMAN SIKINTI ÇÖZÜLÜR |
bende atkesenin dedğini dicektim tam this.hide en mantıklısı ve en olabilitesi yüksek olan |
FORM 2 DE BOTTONA BUNU YAZARSANIZ İSE YARAR İSTEDİGİNİZ KADAR FORM ACIN Bİ ÖNCEKİNİ KAPATMAK İÇİN ASAGIDAKİ KODA İHTİYAC DUYACAKSINIZ Form3 frm3 = new Form3(); this.Hide(); frm3.ShowDialog(); BU SEKİLDE YAPIN BEYLER DİYER TÜRLÜ OLMUYOR Form3 frm3 = new Form3(); // olmuyor denemeyin frm3.ShowDialog(); //olmuyor denemeyin this.Hide(); //olmuyor denemeyin |
1. sayfa
C# da yaptığım uygulamada iki tane form kullandım. Bu formlardan biri parola ekranı diğeri ise programın asıl form'u. Şimdi kullanıcı parolayı bilince form2 otomatik olarak kapanıp form1 açılıcak. Ama bu geçiş kısmını yaptığım halde kapatma olayını yapamadım.
Ben 2.form'u kapatıp 1.form'u açmak için this.Close(); , this.Hide. .... komutlarını denedim olmadı. Sadece form'u gizliyor. Ama programı kapattığımda arka planda çalışıyor. Ben istiyorum ki 2.form tamamen kapansın 1. form açılsın. Ama bir türlü yapamadım. Şimdilik sadece gizleyebiliyorum. Nasıl yapabilirim?
Buradaki kod giriş butonu için;