http___projelerleyazilim.blogspot.com.tr_2015_03_3-c-ile-notepad-notdefteri-yapimi.html_1.xml
2.1 2.2 3.1 3.2 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 5.1
The "X" button usually means close/exit this windows form (or application). Can we have more control of this behavior (or the "X" button)? Yes, we can. In your code behind, create an event for the form you want to control like this: private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DialogResult dr = MessageBox. Show("Do you really want to leave?", "Confirm Window", MessageBoxButtons. YesNoCancel); if (dr == DialogResult. No || dr == DialogResult. Cancel) { MessageBox. Show("That's my boy~"); e. Cancel = true; //means cancel this event } else MessageBox. Show("Bad boy!"); } Every time when user clicks on the "X" button to close the form, it will trigger the above event and perform whatever you design in there.
1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 26.1 27.1 28.1 30.1 31.1 32.1 33.1 34.1 35.1 37.1 38.1 39.1 40.1 42.1 43.1 45.1 46.1 47.1 49.1 51.1 52.1 54.1 56.1 57.1 59.1 60.1 61.1 62.1 63.1 65.1 66.1 67.1 68.1 69.1 70.1 72.1 73.1 75.1 76.1 78.1 80.1 81.1 83.1 84.1 86.1 87.1 88.1 89.1 90.1 91.1 92.1 95.1 96.1 97.1 99.1 101.1 102.1 104.1 105.1 107.1 108.1 110.1 112.1
C# İLE NOTEPAD (NOTDEFTERİ) YAPIMI Geçen yazımda hesap makinesi yapımını anlatmıştım. Bu dersimizde Notepad (Not Defteri) yapımını anlatacağım. Ama öncelikle bu dersimizde neler öğreneceğimize göz atalım. - MenuStrip Kontrolleri - RichTextbox kontrolü - OpenDialog, SaveDialog, FontDialog ve ColorDialog Kontrolleri - Form Closing Olayı ARAYÜZ TASARIMI Düzen menüsü altında kes, kopyala, yapıştır gibi menüler bulunmaktadır. Biçim menüsü altında ise Font ayarları, sözcük kaydırma gibi menüler bulunmaktadır. Görünüm ve Yardım menüleri de yine yukarıda bulunan menülerden diğer ikisi. - MenuStrip (Menü Şeridi) --> Yukarıdaki menüleri otomatik olarak ekleyen kontrol - RichTextBox (Zengin Metin Kutusu) --> Zengin içerikli bir metin kutusudur. - OpenFileDialog (Dosya Aç Diyalog Penceresi) --> Dosya açtırmak, seçtirmek için kullanılır. - SaveFileDialog (Dosya Kaydetme Diyalog Penceresi) --> Dosya kaydettirmek için kullanılır. - FontDialog (Yazı Tipi Diyalog Penceresi) --> Yazı tipini seçtirmek için kullanılır. - ColorDialog (Renk Diyalog Penceresi) --> Yazının rengini seçtirmek için kullanılır. Arayüzün Oluşturulması Visual Studio bu noktada bize bir kolaylık sağlıyor. Bu tür programlarda standart menüleri kendisi otomatik olarak ekliyor. Yukarıda resimde de görüldüğü gibi MenuStrip kontrolünün sağ üst köşesinde çıkan Inserr Standart Items (standart öğeleri ekle) linkine tıkladığımız zaman otomatik olarak en çok kullanılan öğeleri yükler. Görüldüğü gibi elemanlarımız yüklendi. Şimdi de RichTextBox kontrolümüzün tüm sayfayı kaplaması için Dock özelliğini fill (doldur) olarak ayarlıyoruz. Font özelliğini de değiştirerek varsayılan Font olarak herhangi bir font tipi seçebilirsiniz. OpenFileDialog (Dosya Açma Diyalog Penceresi) SaveFileDialog (Dosya Kaydet) FontDialog (Yazı Özellikleri) ColorDialog (Renk Diyalog) KOD YAZIMI Dosya Menüsü Başlık çubuğunda görüntülenmesi istenen dosya adı için BaslikGoster adında bir metod tanımlasak fena olmazdı. Çünkü bu metodu bir kaç yerde kullanmamız gerekecek. Metot dosya adını adres bilgisinden aldıktan sonra sadece adın görüntülenmesi için string sınıfının remove metoduyla son dört karakteri atılmaktadır. Elde edilen ismin ad alanında görüntülenmesi için this.text metodundan yararlanılabilir. public void BaslikDegistir(string DosyaAdi) // Dosya adını adres bilgisinden al. Baslik_DosyaAdi = Path.GetFileName(DosyaAdi); // Son dört karakterini kaldır. Baslik_DosyaAdi = Baslik_DosyaAdi.Remove(Baslik_DosyaAdi.Length - 4); // Dosya adının başlıkta görünmesini sağla this.Text = "Not Defteri - " + Baslik_DosyaAdi; Yukarıdaki kodlarla bir metot tanımladık. Zaten metot içerisinde açıklamalar mevcut. Şimdi de RichTextBox kontrolümüzde değişiklik olup olmadığını kontrol edelim. Eğer değişiklik olduysa ona göre Kaydetme işlemi gerçekleştirilebilir. Dosya adını verdiğimiz RichTextBox kontrolümüz üzerinde çift tıklayarak Text_Changed olayına gidiyoruz. Scooplar içerisine şu kodları ekliyoruz. private void rchDosya_TextChanged(object sender, EventArgs e) // Değişiklik olduysa Degisim değişkenine true değerini ata. Degisim = true; Yeni Belge Oluşturma Not Defteri Form üzerinde File menüsü altında bulunan New menüsünün Click olayı seçildiğinde program tarafından oluşturulan NewToolStripMenuItem_Click metoduna aşağıdaki kodu ekleyin. private void newToolStripMenuItem_Click(object sender, EventArgs e) if (Degisim) DialogResult dr = MessageBox.Show(Baslik_DosyaAdi + " Belge değişti. Değişiklikleri kaydetmek ister misiniz?", "Yeni Belge", MessageBoxButtons.YesNoCancel); if (dr == DialogResult.Yes) saveAsToolStripMenuItem_Click(sender, e); else if (dr == DialogResult.Cancel) return; richTextBox1.Clear(); Degisim = false; Kayitli = false; DosyaAdi = "*.rtf"; Baslik_Degistir("Adsız.rtf"); Yaptıklarımızı kısaca açıklayalım: Yeni belge oluşturulmak istenildiğinde, eğer açık olan belge üzerinde değişiklik yapıldıysa kullanıcıya "Belge değişti. Kaydetmek istiyor musunuz? " diye soruluyor. .Ve MessageBox penceresinden gelen cevap evet ise (dr == DialogResult.Yes) bu durumda program Farklı Kaydet metoduna gidecektir. (Farklı kaydet penceresi için henüz metod tanımlamadık. Bunu bir sonraki aşamada yapacağız.) Eğer gelen cevap İptal ise (dr == DialogResult.Cancel) program hiçbir şey yapmadan MessageBox penceresini kapatacaktır. Eğer gelen cevap Hayır ise o zaman da if bloklarının dışındaki blok çalışacak ve önce temizleme işlemi yapılacak, daha sonra da Degisim ve Kayitli değişkenlerine false değerleri atanacaktır. Ayrıca DosyaAdi değişkenine "*.rtf" adı verilecek ve son olarak da Baslik_Degistir metodu çalıştırılacak ve formun üzerinde yazan isim "Adsız" olarak değiştirilecektir. Var Olan Bir Belgenin Açılması private void openToolStripMenuItem_Click(object sender, EventArgs e) DialogResult dr; if (Degisim) // Eğer Değişim Varsa dr = MessageBox.Show(Baslik_DosyaAdi + " belge değişti. Kaydetmek istiyor musunuz?", "Yeni Belge", MessageBoxButtons.YesNoCancel); // OpenFileDialog penceresini göster if (dr == DialogResult.Yes) saveAsToolStripMenuItem_Click(sender, e); else if (dr == DialogResult.Cancel) return; dr = openFileDialog1.ShowDialog(); //OpenFileDialog penceresini aç if (dr==DialogResult.OK) //Kullanıcı tarafından seçilen dosyayı çağır richTextBox1.LoadFile(openFileDialog1.FileName); //DosyaAdi değişkeni ile açılan dosyanın adını tut. DosyaAdi = openFileDialog1.FileName; //Başlık çubuğunda yeni dosya adının görünmesini sağla. Baslik_Degistir(DosyaAdi); Degisim = false; Belgenin Kaydedilmesi Çıkış İle Programın Sonlandırılması Çıkış yapmadan önce programımızda değişiklik varsa MessageBox ile kullanıcı uyarılmalı. Eğer kullanıcı kaydetmeyi isterse Programın daha önce kayıtlı olup olmadığı kontrol edilmeli. Eğer kayıtlı ise o halde aynı isimle kaydetmesini sağlamalıyız. Eğer kayıtlı değilse Farklı Kaydet metodu ile kaydetmesi sağlanmalıdır. if (Degisim) //Değişim varsa DialogResult dr = MessageBox.Show(Baslik_DosyaAdi + " belge değişti. Kaydetmek ister misiniz?", "Yeni Belge", MessageBoxButtons.YesNoCancel); if (dr == DialogResult.Yes) // Eğer gelen cevap Evet ise // Farklı Kaydet Menüsüne yönlendir. saveAsToolStripMenuItem_Click(sender, e); else if (dr == DialogResult.Cancel) return; Application.Exit(); Devamı Gelecek ....