Show in Taskbar

Show in Taskbar

TASKBAR’DA ÇALIŞMAK

 

            S.A. Arkadaşlar.

            Bugün programlarımızı taskbar’da bir icon ile gösterdikten sonra o icon üzerinde menüler oluşturarak o menüler üzerinden işlem yapmayı işleyeceğiz.

            Programımız çalıştığında onu taskbarda gösterip orada işlem yapabilmek için 2 adet sınıfımıza ihtiyacımız var. Bunların ikisi de System.Windows.Forms isimalanı altında bulunuyor. Windows projesi açtığınızda bu isimalanı standart olarak eklendiği için isimalanlarında bir değişiklik yapmamıza gerek yok.

            Kullanacağımız sınıflar : ContextMenu ve NotifyIcon sınıflarıdır. Bu sınıflardan ContextMenu bizim taskbar’a yerleşen iconumuz üzerinde menüler oluşturmamızı sağlayacak; NotifyIcon ise iconumuzu belirlememizi sağlayacak.

            Bir adet Windows projesi açtığınızı varsayıyorum ve başlıyorum. İlk önce bir .ico uzantılı resmimizi projemize dahil ediyoruz yada Solution Explorer üzerine sağ tıklayarak Add => New Item ‘ a girip oradan Icon File seçiyoruz ve bir bakmışız ki projemizde bir çizim alanı oluşmuş. Orada iconu kendiniz çizdikten sonra kaydederek de kullanabilirsiniz. Neyse artık kodlarımızı yazmaya başlasak tam süper olacak :)

---------------------------------------------------------------------------------------------------------

public partial class Form1 : Form

{

        private NotifyIcon nicon;

        private ContextMenu cMenu;

 

        private void Form1_Load(object sender, EventArgs e)

        {

            nicon = new NotifyIcon();

            nicon.Text = "Programımızın adı olabilir";

            nicon.Visible = true;

            nicon.Icon = new Icon("Icon1.ico");

            cMenu = new ContextMenu();

            cMenu.MenuItems.Add(0, new MenuItem("Göster", new System.EventHandler(Goster_Click)));

            cMenu.MenuItems.Add(1, new MenuItem("Gizle" , new System.EventHandler(Gizle_Click)));

            cMenu.MenuItems.Add(2, new MenuItem("Kapat" , new System.EventHandler(Kapat_Click)));

            nicon.ContextMenu = cMenu;

        }

 

        protected void Goster_Click(object sender, System.EventArgs e)

        {

            Show();

        }

 

        protected void Gizle_Click(object sender, System.EventArgs e)

        {

            Hide();

        }

 

        protected void Kapat_Click(object sender, System.EventArgs e)

        {

            nicon.Dispose();

            Close();

        }

 

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            nicon.Dispose();

        }

}

---------------------------------------------------------------------------------------------------------

Şimdi bu kod bloğunun ne iş yaptığına gelelim. public partial class (Genel Kısmi Sınıf) içerisinde private dönüş tipinde nicon adında NotifyIcon ve cMenu adında ContextMenu oluşturduk. Daha sonra formumuzun Load olayına gelip nicon’u new anahtar sözcüğü ile kullanıma açtık. nicon’un text özelliğini kullandığımızda bizim iconumuz taskbar’a yerleştiğinde mouse ile üzerine geldiğimizde çıkacak olan yazıyı belirliyoruz. Nicon’un Visible özelliği ile görünür olmasını sağlıyoruz. Nicon’un Icon özelliği ile projemiz içerisine dahil olan ve kullanacağımız .ico dosyasını gösteriyoruz. Ben Cisual Studio’nun iconunu çaldım :) cMenu adı ile belirttiğimiz ContextMenu’müzü de new anahtar sözcüğü ile kullanıma açtık. Şimdi MenuItems.Add ile menüler ekliyoruz. İlk parametre olarak menünün yerini belirledik [ İlk menü için 0(Sıfır)’dan başlamalıyız. ] İkinci parametremizde ise iki adet parametre alan MenuItem ı kullanıma açarak onun birinci parametresine Menude gözükecek ifadeyi, ikinci parametresine ise belirttiğimiz ifadenin bir olayını belirledik. İlk menüde “Göster” ile belirttiğimiz ifadenin olay adı olarak da “Goster_Click” verdik. Birkaç satır sonra da bu olayı oluşturup ne yapması gerektiğini belirleyeceğiz. Bu kod bloğu içerisinde yapacağımız son işlem ise nicon’un ContextMenu’sü olarak cMenu yü atamak olacaktır. Yoksa menülerimiz gözükmez.

            Aslında işin bu kısmı olaylar nasıl yaratılır adı altında konuşulacak bir konu fakat yine de kafanızda en azından neyin ne olduğu hakkında bir fikir oluşması için açıklayayım. Normalde geniş bir konu. Vaktim olursa onu da anlatırım. Neyse devam edelim.

            protected anahtar sözcüğü ile bu işlemin sadece belirtilen alan içerisinde erişilmesini sağladık.void ile geri dönecek değerin boş olduğunu belirttik. Sonra yukarıda belirttiğimiz olay adını verdik (“Goster_Click”). Yukarıdaki olay çalıştırılırken bu kod bloğunun içerisine düşecek ve buradaki işlemleri yapacak. Eğer isimler aynı olmazsa çalışma zamanında bize hata verecektir. Bu olay bir click olayı olduğu için bizim bir şeyler göndermemiz gerekir. Bunun için ilk parametre olarak object tipinde sender adında bir değişken verdik. (“sender herkes tarafından standart olarak kullanılır”) İkinci parametre olarak da bir bağımsız bir olay değişkeni tanımladık. Bunun için System.EventArgs’ı kullanmak zorundayız. Ayrı ayrı kod bloklarının içerisinde yaptıklarımıza gelince Show(); metodu ile bu menüye tıklandığında ekranda gözükesini; Hide(); metodu ile ekranda saklanmasını sağladık. Kapat_Click olayında da Close(); metodunu kullandık fakat orada nicon.Dispose(); diye bir şey var. Bu nedir ? Neden kullandım onu açıklayayım. Eğer bunu yazmamış olsaydık iconumuz programımız kapandıktan sonra da gözükecekti. Biz üzerine geldiğimizde alacağımız yazı değişkeni olmadığı için artık bunu bellekten silecekti. Fakat böyle bir durum programcıların pek hoşuna gitmez. Eğer biz bu iconu Dispose edip bellekten çıkışını sağlamazsak o icon ikinci bir işleme tabii tutulana kadar programımız kapanmış olsa bile orada duracaktır. Dispose() metodu ile bellekten salınması yani diğer bir değişle silinmesini sağlarız. Bunu da Kapat_Click olayı gerçekleştiği sırada yaptırdım.

            Son olayımız ise formumuzun sağ üst köşesindeki “X”  işaretine bastığımızda çalışacak olan olaydır. Bunun ikinci parametresi ise System.Windows.Forms isimalanı altında bulunan Form Kapatmak için gerekli olan bağımsız değişkendir. Bu olay da iconumuzun bellekten silinip serbest bırakılmasını ve program kapandığı anda iconumuzun taskbar’dan kaldırılmasını sağlayacaktır. Bu olayı desing alanındayken properties içerisinde yıldırım şekliyle Events sekmesi bulunmaktadır. Oradan FormClosing olayını bulup çift tıklarsanız Visual Studio bizim için bu olayın arka planında gerçekleşecek işlemlerini de yapacaktır. Arka planda yaptıklarından kastım Form1.Designer.cs dosyası içerisinde yapacağı birkaç ufak değişikliktir. Şimdi onların ayrıntısına inmemize gerek yok diye düşünüyorum ama isteyenler olursa onları da açıklayabilirim.

             Umarım anlattıklarım faydalı olmuştur. Başka bir yazıda görüşmek dileğiyle.

 

Proje ve Doküman     :           http://condoric.t35.com/ShowInTaskbar.rar

 

Doğukan DEMİR

Döküman Arama

Başlık :

Kapat