link

C# Formunuzu Saniyelerle Kapatın!

C-Sharp-Form-Kapatma-İşlemi_emresupcinMerhaba arkadaşlar,

Bu projemiz de formumuzu geri sayımla kapatmayı göreceğiz. Projemiz için gerekenler;  Adet textbox, label, buton ve timer. Formunuzun başlığını silin başlık kısmı boş kalsın tabi siz kafanıza göre bir şey de yazabilirsiniz. Label ın text ini ben süreyi gir dedim siz kendinize uygun birşey yazabilirsiniz. Butonun text ini Formu Kapat yazdım. Aşağıda global bir değişken tanımlayalım.

 

1  int saniye;

 

Formun load olayına asağıdaki kodları yazdım.

 

1   private void Form1_Load(object sender, EventArgs e)
2        {
3            button1.Enabled = false;
4        }

 

Buton ilk açılışta pasif görünecek.

Butonu aktif etmek için textbox a birşeyler girmeye başlayınca buton aktif olacak.Kod aşağıda;

 

1  private void textBox1_TextChanged(object sender, EventArgs e)
2        {
3            button1.Enabled = true;
4        }
5
     // Butonun klik olayına aşağıdaki kodları yazdım.

6   private void button1_Click(object sender, EventArgs e)
7        {
8            try
9            {
10                timer1.Interval = 1000;
11                timer1.Enabled = true;      
12               button1.Enabled = false;
13                    
14              }
15            catch (Exception hata)
16            {
17                MessageBox.Show(hata.Message);
18            }
19        }

 

Yukarıda oluşabilecek hataları önlemek için try catch bloğunu kullandım.
Her bir saniye de sürenin eksilmesi gerektiğinden interval değerini 1000 yaptım.Bunun nedeni 1 saniye eksilmesi için 1000 yaptım.
.Enabled=true da butona tıkladığımız da timer çalışmaya başlayacak.Butona tıkladıktan sonra tekrar pasif yaptım.

Artık saniyeleri eksiltmeye başlayabiliriz. Bunun için timer ın tick olayına aşağıdaki kodları yazdım.

 

1  private void timer1_Tick(object sender, EventArgs e)
2        {
3            try
4            {
5                int zaman;
6                saniye = int.Parse(textBox1.Text);
7                textBox1.Enabled = false;
8                saniye--;              
9                zaman = saniye ;             
10            this.Text ="Formun Kapanmasına "+ zaman.ToString()+" Saniye Kaldı";
11            textBox1.Text = saniye.ToString();
12            if (zaman == 0)
13                {
14                    timer1.Enabled = false;
15                    this.Text = "Form Kapandı";
16                    this.Close();
17                }
18            }
19            catch (Exception hata)
20            {
21                MessageBox.Show(hata.Message);
22            }
23        }

 

Şimdi kodların ne işe yaradığını açıklamaya başlayabiliriz.
sayısal değer de bir zaman isminde bir değişken tanımladım.İlk başta tanımladığım saniye değişkenini textbox ı sayı tipine dönüştürerek eşitledim.

Tekrar dan veri girmeyi engellmek için textbox ı pasif yaptım.
Sonra saniiye değişkenini 1 er (–) eksiltmeye başladım.Sonra zaman değişkenini saniye değişkenine eşitledim. Sonra bu geri sayım işini başlığa yazdırdım. Tekrar baştan başlamayı engellemek için textbox ı saniye değişkenine eşitledim.

Şimdi zaman değişkeni 0 a eşit olduğun da timer ı kapattık sonra formun text değerini değiştirdik ve formu kapattık.

Yazar
Yazar
Bilgisayar Programcısı, Web Tasarımcı, Üniversite Öğrencisi...
Twitter Facebook Google Linkedin Flickr YouTube

Önceki Yazı:C# Dosya Taşıma İşlemi?

Sonraki Yazı:C# (Sharp) Tarihi?

BENZER YAZILAR
YORUMLAR

Bu yazıya 2 yorum yapılmış.

  1. Yazar
    Ömer

    Kardeşim şimdi elimde kullanıcı girişi var ama textboxlara birşey girmeyince buton aktif olmasın yapıyorum ama bu seferde tıkladığımda diğer forma geçmiyor nasıl olacak ???

  2. Yazar

    Merhaba
    C#’da şöyle birşey yapmayı düşünüyorum. Şimdi 1 tane textbox , 1 tane timer ve 1 tane buton var.

    Botuna tıkladığım zaman Textbox’a yazdığım değeri verdiğim süre sonra silecek bir program yapmayı düşünüyorum. Nasıl yapabilirim?

SİZ DE CEVAP YAZABİLİRSİNİZ
Bu yazı hakkında görüşünüzü belirtin.

ES Web Tasarım Web Tasarım Blog Teması Emre Supçin Bu tema ES Web Tasarım tarafından düzenlenmiştir. Hiçbir şekilde kopyalanamaz.