Makale Özeti

Windows uygulamalarında büyük önem taşıyan menüler konusu hakkında bir yazı.

Makale

       Yazı yazan bi insan için herhalde en zor şey, ne yazacağını bulmaktır. Acaba onu mu yazsam yoksa bunu mu derken saatler geçer fark etmezsiniz bile. Bende geçirdiğim birkaç saatten sonra bu yazıda Windows Forms ve Menüler konusunu kaleme almaya karar verdim.

       Menüler, Windows programlarında hayatımızı önemli ölçüde kolaylaştıran öğelerdir. Menüler sayesinde programda ki birçok işlemi menülere toplar ve ortalıkta gereksiz düğmelerin olmasını engellersiniz. Ayrıca menüler programlarınıza daha profesyonel bir hava katar.

        Bu yazıda bizde kendi programlarımıza nasıl menüler ekleyebileceğimizi, bu menülerin ne gibi özellikleri olduğunu göreceğiz. Bunları öğrenmek için yazının sonuna kadar okumanız yeterli...

İşe Başlayalaım

       Bugüne kadar tüm yazılarımda, Visual Studio yu kullanmadan işlem yaptım, ASP.Net kodlarını .aspx sayfalarına kaydettik ve çalıştırdık; lakin bu yazıda Visual Studio.Net e ihtiyacımız var. Eğer siz bu programa sahip değilseniz oldukça benzer olan WebMatrixi de kullanabilirsiniz.

        Öncelikle hemen bir Windows Application oluşturalım. Ben C# dili ile örneklerimi yazacağım, siz isterseniz VB.Net veya diğer dilleri kullanabilirsiniz. Çünkü yazacağımız birkaç satır kod dışında değişen birşey olmayacak.

         Projemizi oluşturunca karşımıza boş bir form çıkacak. Bu formu enine uzatıp, boyuna kısaltırsanız daha yakışıklı bir görünüme kavuşabilir :)

İlk Menümüz : Main Menu

       Ekranın sol tarafındaki ToolBoxtan MainMenuye çift tıklayın. Böylece formunuzun alt tarafına mainMenu1 ismi ile yerleşecektir. Yerleşen bu simgeye bir kere tıklarsanız formunuzun üst tarafında menü belirecek zaten ve "Type Here" yazısı görüntülenecek. Bu yazıya tıklarsanızda aşağıdaki gibi bir değişim olacaktır.

        Siyah alana menünüzün adını yazacaksınız. Bu ad birçok programdan aşina olduğumuz "Dosya","Düzen" şeklindeki menü adlarından biri olabilir. Bunu yazdıktan sonra eğer alt taraftaki "Type Here" a tıklarsanız bu sefer menünün bir öğesinin adını girme şansınız olacak. Şayet siz bu menününde alt seçenekleri olsun diyorsanız bu sefer yana doğru açılan "Type Here" a birşeyler yazmanız gerekir. Yan yana kaç tane genel menü olsun istiyorsanız her seferinde bir sağdaki "Type Here" ifadelerine tıklayıp istediğiniz ismi verin.

Menüleri Oluştururken

       Menüleri oluştururken aşağıdaki durumları göz önüne alırsanız daha güzel tasarımlı menüleriniz olacaktır.

  • Menü isimlerinde & işareti kullanırsanız, bu işareti kullandığınız karakter kısayol olur ve altı çizi olur. Yani &Dosya > Dosya, Dü&zen > Düzen gibi. Bu kısa yollara da Alt + KısaYolHarfi ile ulaşabildiğinizi biliyorsunuz.

  • Eğer genel menülerin altındaki menü öğelerinden birinin adını - (eksi) olarak yazarsanız bu öğeler arasına bir çizgi koyacaktır. Böylece gruplama yapma imkanınız olur. Örneğin aşağıdaki gibi olur.

    Tasarlarken Görünecek hali
  • Menü öğelerinize klavyeden direk kısa yollar verebilirsiniz. Yani Yeni Form Aç öğesine Ctrl + N şeklinde bir kısayol, Bu Formu Kapat öğesine de Alt + F4 şeklinde bir kısayol verebilirsiniz. Bunun için o öğeyi seçin ve Properties ekranından Shortcut ı bulun. Buradanda örneğin Ctrl + N için CtrlN yi seçin. Bu kısayollar program çalışırken yanlarında görüntülecektir.

        Sıra geldi menülere olaylar atamaya. İlk olarak Yeni Form Aç öğesi ile başlayalım. Bu öğeye çift tıklayarak kod editörüne geçin ve aşağıdaki kodu yazın.

Form yeniForm = new Form();
yeniForm.Location = new Point(10,10);
yeniForm.Size = new Size(300,300);
yeniForm.Text = "Yeni Form";

Label yeniLabel = new Label();
yeniLabel.Text = "Yeni etiket";
yeniLabel.Location = new Point(30,40);

yeniForm.Controls.Add((Label)yeniLabel);
yeniForm.Show();

      Eğer C# konusunda biraz bilgili iseniz bu kodun yeni bir Form ekranı oluşturup, belli bazı özelliklerini belirledikten sonra ekrana getirdiğini anlayabilirsiniz. Ama ben yine de satır satır anlatmak istiyorum bu kodu.

1.Satır: Burada Form sınıfından yeni bir nesne bildiriyoruz ve adına yeniForm diyoruz. Form sınıfının özelliklerine bu nesne ile ulaşacağız.
2.Satır: yeniForm.Location, formumuzun ana onu açan forma göre nerede olacağını belirler. Bunu da Point olarak belirleriz.
3.Satır: yeniForm.Size ise, formumuzun boyutlarını pixel cinsinden belirlememizi sağlar.
4.Satır: yeniForm.Text özelliği de formun başlığında yazan yazıyı belirler.
6.Satır: Bu satırda bir Label öğesi oluşturuyoruz ve yeniLabel isimli bir nesneye atıyoruz. Bu etketi yeni açtığımız formun içine koyacağız.
7.Satır: yeniLabel.Text ile etiketimizin etiket değerini atıyoruz.
8.satır: yeniLabel.Location ile de etiketin ekleneceği form içinde nerede duracağını belirleriz. Ben 30 pixel sağda, 40 pixel aşağıda olsun istediğim için Point(30,40) yazdım.
9.Satır: Burada yeniForm.Contros.Add() metodu ile oluşturduğum etketi yeni forma koydum.
10.Satır: Artık hazır olan formu Show() metodu ile ekrana getirdim. Show metodundan başka ShowDialog() adında başka bir metod daha var; ama o metodu seçerseniz açılan form açıkken, diğer formu yönetemiyorsunuz.

       Yukarıda gördüğünüz gibi ekrana gelecek formu da biz oluşturduk. Normalde bu formu projeye ekleyip tasarlayabilir ve etiketi tasarımda üzerine koyabilir sonra da Show metodu ile ekrana getirebilirdik; lakin bu yöntem ile hazırlanan programlar bellek üzerinde daha çok yer tutar. Çünkü oluşturulan her formu belleğe alır ve bu tür programlamaya DesignTime denir; yani olacak herşey tasarım aşamasında konulmuştur. Lakin bizim yaptığımız gibi kodlar ile oluşturulan yapılara da RunTime denir ve bu türde ekrana gelecek ya da ekrandan gidecek herşey çalışma zamanında kodlar ile oluşturulur ve yok edilir. Bu tür programlar bellek üzerinde daha az yer tutar.

       Bu menü öğesinin olayını yazdığımıza göre diğer menü öğesininde olayını yazalım. Şimdi "Bu Formu Kapat" öğesine çift tıklayıp, kod editörüne düşün. Karşınıza gelen ekrana

this.Close();

kodunu ekleyin. Bu kod, this i temsil eden Formunuzu kapatacaktır.

      Bu konu aslında burada bitmedi; lakin bu yazıyı sonlandırmam gerekiyor. Bir sonraki yazı da Context Menu lere değinecek, sağ tuş menülerinin nasıl oluşturulduğunu ve nasıl yönetildiğini anlatacağım.