Şimdi Ara

C#->1.Form'dan 2.Form'a Geçerken 1.Form'u Kapatmak

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
19
Cevap
0
Favori
53.528
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar;

    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;


    Form1 anasayfa = new Form1(); 
    if (textBox1.Text == "Parola")
    {
    MessageBox.Show("Başarıyla giriş yaptınız", "Hoş Geldiniz", MessageBoxButtons.OK, MessageBoxIcon.Information);
    anasayfa.Show();
    }
    if (textBox1.Text == "")
    {
    MessageBox.Show("Lütfen metin kutusunu boş bırakmayınız.", "Metin Kutusu Boş", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    else
    {

    i--;
    if (i == 0)
    {
    MessageBox.Show("Hakkınız bittiği için program kapatılıyor. Kendinize iyi bakın.", "Program Kapanıyor", MessageBoxButtons.OK, MessageBoxIcon.Error);
    Application.Exit();
    }
    else
    {
    MessageBox.Show(i.ToString() + " hakkınız kaldı. Lütfen doğru parolayı giriniz.", "Parola Yanlış Girildi", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    }







  • 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.

     
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
    }

    //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
    private void Form1_Shown(object sender, EventArgs e)
    {
    Form2 fr2 = new Form2();
    this.Visible = false;
    fr2.ShowDialog();
    this.Visible = true;
    }

    //form2'de senin kodların olacak zaten




  • Teşekkürler. Deneyeceğim.
  • Program.cs içindeki kodlardır.

    using System; 
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;

    namespace KingXP_İnce_Ayar_Merkezi
    {
    static class Program
    {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
    }
    private void Form1_Shown(object sender, EventArgs e)
    {
    Form2 fr2 = new Form2();
    this.Visible = false;
    fr2.ShowDialog();
    this.Visible = true;
    }
    }
    }


    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.

    quote:

    form2'yi kapatırken dispose et, ve form2'den dönüşteki koda form1'i tekrar göster.

    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) 
    {
    Dispose();
    }


    Teşekkürler.




  • Yapay Zeka’dan İlgili Konular
    Sneıjder'i Gönderip 4-4-2..
    9 yıl önce açıldı
    Daha Fazla Göster
  • 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?



    < Bu mesaj bu kişi tarafından değiştirildi RC-1138 -- 6 Haziran 2009; 17:16:35 >




  • 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;




  • quote:

    Orijinalden alıntı: konti73

    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();
  • this.Dispose();
    Form2.Show();
  • 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



    < Bu mesaj bu kişi tarafından değiştirildi PİSTELERO 16 -- 11 Şubat 2015; 21:15:32 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.