www.mavi.benimforum.biz
Would you like to react to this message? Create an account in a few clicks or log in to continue.

C# Projelerinde Kod Yazarak Menü ve Komut Hazırlamak

Aşağa gitmek

C# Projelerinde Kod Yazarak Menü ve Komut Hazırlamak Empty C# Projelerinde Kod Yazarak Menü ve Komut Hazırlamak

Mesaj   Perş. Tem. 03, 2008 8:17 pm

Bildiğiniz gibi Microsoft firması .NET Framework 2.0’dan itibaren menü ve durum çubuğu hazırlamak amacıyla kullanılan kontrollerde köklü değişiklikler yaptı. Hatta .NET Framework 1.1 ile birlikte verilen kontrolleri kaldırıp yerine başkalarını verdi. C# 2.0 konulu kitabımın ilk cildinde menüler hakkında bilgi içeren bölüm bulunmuyor. Neden bulunmuyordu diye merak edenlere şu açıklamayı yapmak isterim: Kitabın bölümlerini ve tahmini sayfa sayılarını sıralayınca kitabın 1400-1500 arası bir sayfa sayısına sahip olacağını fark edince tam ortasından bölüp 2 cilt olarak yayınlamaya karar verdim. Sonra değişik nedenlerden dolayı çalışmalarım aksayınca kitabın 2. cildini zamanında tamamlayamadım. Ötesi 2. ciltte yer alacak konular üzerinde biraz çalışında 2. cildin sayfa sayısının 850-900 gibi bir değere ulaştığını gördüm. Çaresiz kitabın 2. cildinde yalnızca ADO.NET’le ilgili konulara yer verdim. Geriye kalan çoğu ileri düzey konuları ise belki 3. bir cilt olarak yayınlayacağım. Bu arada olan ilk ciltte yer alması uygun olan menu, durum çubuğu, TreeView ve ListView gibi birkaç konuya oldu. 2. cildin yalnızca ADO.NET hakkında bilgi içermesinden dolayı bu 4 konuya ilk ciltte yer vermiş olsaydım daha iyi olacakmış. Kitabımın ilk cildini alanları düşünerek menüler hakkında kısa bir yazı hazırladım. Benzer yazıları ilk fırsatta TreeView ve ListView kontrolleri için de hazırlayacağım.

Menüleri ve menülerde yer alacak komutları tasarım anında hazırlamak son derece kolaydır. Ancak isterseniz bu işlemi kod yazarak yapabilirsiniz. Bu işlemin nasıl yapıldığını anlatmak için yeni bir proje hazırladım ve forma bir MenuStrip nesnesi yerleştirip aşağıda verdiğim kodu hazırladım.

private void Form1_Load(object sender, EventArgs e)
{
menuStrip1.Items.Add("Dosya");
menuStrip1.Items.Add("Düzen");
menuStrip1.Items.Add("Görünüm");
}

Bu satırlar sayesinde MenuStrip nesnesine Dosya, Düzen ve Görünüm adında 3 menü eklenir. Ancak bu menüler henüz herhangi bir komuta sahip değildir. Yukarıda MenuStrip nesnesini Toolbox’tan yararlanıp forma yerleştirmiştim. İsterseniz bu işlemi de kod yazarak yapabilirsiniz. Kod yazılarak nasıl MenuStrip nesnesi hazırlandığını anlatmak için formdaki nesneyi sildim ve yukarıda verdiğim kodu aşağıdaki gibi değiştirdim.

private void Form1_Load(object sender, EventArgs e)
{
MenuStrip Anamenu = new MenuStrip();
Anamenu.Parent = this;
Anamenu.Items.Add("Dosya");
Anamenu.Items.Add("Düzen");
Anamenu.Items.Add("Görünüm");
}

Bu satırlar sayesinde önce “Anamenu” adında bir MenuStrip nesnesi hazırlanmakta ve bu nesneye 3 adet ToolStripItem nesnesi dahil edilmektedir. Bu kodda kendi hazırladığım MenuStrip nesnesinin formun üzerinde görünmesini sağlamak için Parent özelliğinde ayarlama yaptım. Şimdi ise MenuStrip nesnesinib parent özelliğinde ayarlama yapmak yerine formun Controls koleksiyonuna ekleyeceğim.

private void Form1_Load(object sender, EventArgs e)
{
MenuStrip Anamenu = new MenuStrip();
Anamenu.Items.Add("Dosya");
Anamenu.Items.Add("Düzen");
Anamenu.Items.Add("Görünüm");
this.Controls.Add(Anamenu);
}

Bu kodda işin kolayına kaçıp MenuStrip nesnesine Add() metodu ile 3 menü ekledim. Şimdi ise farklı bir yol izleyip önce “Dosya” ve “Duzen” adında 2 menü nesnesi hazırlayıp bunları MenuStrip nesnesine ekleyeceğim.

private void Form1_Load(object sender, EventArgs e)
{
MenuStrip Anamenu = new MenuStrip();
this.Controls.Add(Anamenu);
ToolStripMenuItem Dosya;
Dosya = new System.Windows.Forms.ToolStripMenuItem();
Dosya.Text = "Dosya";
ToolStripMenuItem Duzen;
Duzen = new System.Windows.Forms.ToolStripMenuItem();
Duzen.Text = "Düzen";
Anamenu.Items.Add(Dosya);
Anamenu.Items.Add(Duzen);
}

Bu kodda 2 ToolStripMenuItem veya menü hazırlayıp MenuStrip nesnesine Add() metodu ile ayrı ayrı ekledim. Birden fazla menüyü bir seferde eklemek istediğinizde Add() yerine AddRange() metodunu aşağıdaki gibi kullanabilirsiniz.

private void Form1_Load(object sender, EventArgs e)
{
MenuStrip Anamenu = new MenuStrip();
this.Controls.Add(Anamenu);
ToolStripMenuItem Dosya;
Dosya = new System.Windows.Forms.ToolStripMenuItem();
Dosya.Text = "Dosya";
ToolStripMenuItem Duzen;
Duzen = new System.Windows.Forms.ToolStripMenuItem();
Duzen.Text = "Düzen";
Anamenu.Items.AddRange( new System.Windows.Forms.ToolStripItem[]
{ Dosya, Duzen} );
}

Şimdi sırada Dosya ve Düzen başlıklı bu menülere komut eklemek var. Bu amaçla önce 2 adet ToolStriptMenuItem nesnesi hazırladım. Ardından bu 2 nesneyi Add() metodu ile daha önce hazırladığım Dosya menüsüne ekledim.

private void Form1_Load(object sender, EventArgs e)
{
MenuStrip Anamenu = new MenuStrip();
this.Controls.Add(Anamenu);
ToolStripMenuItem Dosya;
Dosya = new System.Windows.Forms.ToolStripMenuItem();
Dosya.Text = "Dosya";
ToolStripMenuItem Duzen;
Duzen = new System.Windows.Forms.ToolStripMenuItem();
Duzen.Text = "Düzen";
Anamenu.Items.Add(Dosya);
Anamenu.Items.Add(Duzen);
ToolStripMenuItem Yeni;
ToolStripMenuItem Kapat;
Yeni = new System.Windows.Forms.ToolStripMenuItem();
Kapat = new System.Windows.Forms.ToolStripMenuItem();
Yeni.Text = "Yeni";
Kapat.Text = "Kapat";
Dosya.DropDownItems.Add(Yeni);
Dosya.DropDownItems.Add(Kapat);
}

Son derece basit olan bu kodu geliştirip çalıştma anında istediğiniz özelliklere sahip menüleri kolayca hazırlayabilirsiniz. Şimdi sırada menülerdeki komutlar için kod yazmak var. Yukarıda verdiğim kodda mnüler ve komutlar için değişken tanımlama işlemini Load() metodu içinde yaptım. Bu nedenle bu nesneler Load() metodundan çıkıldığı zaman tanımsız duruma düşerler. Dosya menüsünden Kapat komutu verildiği zaman işletilmek üzere önce aşağıdaki gibi basit bir metot hazırladım.

private void Kapat_Click(object sender, EventArgs e)
{
Application.Exit();
}

Ardından Load() metoduna aşağıda verdiğim satırı ekleyerek Kapat komutu ile bu metot arasında ilişki kurdum. MenuStrip nesnesi ve komutlar tasarım anında hazırlandığında komutlar ile metot arasındaki ilişki Visual Studio tarafından otomatik olarak sağlanmaktadır.

Kapat.Click += new System.EventHandler(Kapat_Click);

Konu böylece uzayıp gidiyor. Meraklı arkadaşlara şunu söylemek isterim: Bu metni okuduktan sonra elinizde varsa başka yerli veya yabancı yazarların kaleminden çıkma menüler hakkında bilgi içeren kitap veya yazılara bir bakın lütfen.


Kayıt tarihi : 01/01/70

Sayfa başına dön Aşağa gitmek

Sayfa başına dön


 
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz