Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# .NET Framework 4 ile Windows Forms uygulamalarımızda sıkça kullandığımız ve uygulamaların arka planda çalışırken kullanıcıya bildirimler göstermesini sağlayan NotifyIcon
kontrolünü yakından inceleyeceğiz. NotifyIcon
, özellikle sistem tepsisinde (system tray) bir ikon görüntüleyerek kullanıcılara uygulamanın durumu hakkında bilgi vermemizi veya hızlı erişim seçenekleri sunmamızı sağlar. Gelin, NotifyIcon
'ın temel özelliklerini, metotlarını ve olaylarını birlikte keşfedelim.
NotifyIcon
Kontrolü Nedir?
NotifyIcon
kontrolü, Windows Forms uygulamalarında sistem tepsisinde (saatin yanında, bildirim alanında) bir ikon görüntülemenizi sağlar. Bu ikon aracılığıyla kullanıcıya uygulama durumu hakkında bilgi verebilir, balon ipuçları (balloon tips) gösterebilir veya sağ tıklama menüsü (context menu) ile hızlı erişim seçenekleri sunabilirsiniz. NotifyIcon
, görsel bir kontrol değildir; formun tasarımcı görünümüne eklenen bir bileşendir.
NotifyIcon
Kontrolünün Temel Özellikleri ve Metotları
NotifyIcon
bileşeni, sistem tepsisindeki ikonun davranışını ve görünümünü özelleştirmek için çeşitli özelliklere sahiptir:
Icon
: Sistem tepsisinde görüntülenecek ikonu alır veya ayarlar. Bu, genellikle bir.ico
uzantılı dosya olmalıdır.Text
: Fare imleci ikonun üzerine geldiğinde görünen ipucu metnini (tooltip) alır veya ayarlar.Visible
: İkonun sistem tepsisinde görünüp görünmediğini belirler (true
ise görünür,false
ise gizli). Uygulama başlatıldığında veya kapatıldığında bu özelliği ayarlamak önemlidir.ContextMenuStrip
: İkona sağ tıklandığında açılacak olan bağlam menüsünü (context menu) alır veya ayarlar. Bu, kullanıcıya hızlı eylem seçenekleri sunmak için kullanılır.ShowBalloonTip(int timeout, string tipTitle, string tipText, ToolTipIcon tipIcon)
: Sistem tepsisinde bir balon ipucu (bildirim) görüntüler.timeout
: Balon ipucunun ekranda kalacağı süre (milisaniye cinsinden).tipTitle
: Balon ipucunun başlığı.tipText
: Balon ipucunun ana metni.tipIcon
: Balon ipucunda görüntülenecek simge (None
,Info
,Warning
,Error
).
NotifyIcon
Kontrolünün Temel Olayları
NotifyIcon
, kullanıcı etkileşimlerine ve balon ipucu durum değişikliklerine tepki vermek için çeşitli olaylar sunar:
Click
: İkona sol tıklandığında tetiklenir.DoubleClick
: İkona çift tıklandığında tetiklenir. Genellikle uygulamayı geri yüklemek veya ana pencereyi göstermek için kullanılır.BalloonTipClicked
: Balon ipucuna tıklandığında tetiklenir.BalloonTipClosed
: Balon ipucu kapandığında tetiklenir (zaman aşımı veya kullanıcı tarafından kapatılma).BalloonTipShown
: Balon ipucu görüntülendiğinde tetiklenir.
NotifyIcon
Kullanım Senaryoları
1. Basit Bir Bildirim İkonu Oluşturma
Bu örnekte, sistem tepsisinde bir ikon görüntüleyeceğiz ve fare üzerine gelindiğinde bir ipucu metni göstereceğiz.
using System;
using System.Windows.Forms;
using System.Drawing; // Icon için
public partial class Form1 : Form
{
private NotifyIcon notifyIcon1; // Tasarımcıda eklenen NotifyIcon bileşeni
public Form1()
{
InitializeComponent();
// NotifyIcon bileşenini oluştur (eğer tasarımcıda eklemediyseniz)
notifyIcon1 = new NotifyIcon();
// Sistem tepsisinde görüntülenecek ikonu ayarla
// Uygulamanızın projesine bir .ico dosyası ekleyip Resources'tan alabilirsiniz.
// Örneğin: Properties.Resources.MyIcon;
// Veya doğrudan bir dosyadan yükleyebilirsiniz:
try
{
notifyIcon1.Icon = new Icon(Application.StartupPath + "\\appicon.ico"); // Kendi ikon dosyanızın yolunu belirtin
}
catch (Exception ex)
{
MessageBox.Show("İkon yüklenirken hata oluştu: " + ex.Message, "Hata");
// Varsayılan bir ikon kullanabiliriz veya uygulamadan çıkabiliriz
notifyIcon1.Icon = SystemIcons.Application; // Varsayılan uygulama ikonu
}
// İkonun üzerine gelindiğinde görünecek metni ayarla
notifyIcon1.Text = "Webkolog.net Uygulaması";
// İkonu görünür yap
notifyIcon1.Visible = true;
// İkona çift tıklandığında Form1'i gösterme olayını bağla
this.notifyIcon1.DoubleClick += new EventHandler(notifyIcon1_DoubleClick);
// Form kapatıldığında ikonu gizle ve dispose et
this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
}
// İkona çift tıklandığında formu göster
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
this.Show(); // Formu göster
this.WindowState = FormWindowState.Normal; // Formu normal boyuta getir
this.Activate(); // Formu aktif yap
}
// Form kapatılırken NotifyIcon'ı gizle ve kaynaklarını serbest bırak
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
notifyIcon1.Visible = false; // İkonu gizle
notifyIcon1.Dispose(); // Kaynakları serbest bırak
}
}
2. Balon İpuçları (Bildirimler) Gösterme
ShowBalloonTip
metodu ile kullanıcılara anlık bildirimler gönderebiliriz.
using System;
using System.Windows.Forms;
using System.Drawing;
public partial class Form1 : Form
{
private NotifyIcon notifyIcon1;
public Form1()
{
InitializeComponent();
notifyIcon1 = new NotifyIcon();
notifyIcon1.Icon = SystemIcons.Information; // Bilgi ikonu
notifyIcon1.Text = "Bildirim Uygulaması";
notifyIcon1.Visible = true;
// Balon ipucu olaylarını bağla
this.notifyIcon1.BalloonTipClicked += new EventHandler(notifyIcon1_BalloonTipClicked);
this.notifyIcon1.BalloonTipClosed += new EventHandler(notifyIcon1_BalloonTipClosed);
this.notifyIcon1.BalloonTipShown += new EventHandler(notifyIcon1_BalloonTipShown);
// Form üzerinde bir buton (buttonShowNotification) olduğunu varsayalım
this.buttonShowNotification.Click += new EventHandler(buttonShowNotification_Click);
}
private void buttonShowNotification_Click(object sender, EventArgs e)
{
// 3 saniye (3000 ms) boyunca görünecek bir balon ipucu göster
notifyIcon1.ShowBalloonTip(3000, "Yeni Mesaj", "Webkolog.net'ten yeni bir bildiriminiz var!", ToolTipIcon.Info);
}
private void notifyIcon1_BalloonTipShown(object sender, EventArgs e)
{
Console.WriteLine("Balon ipucu gösterildi.");
}
private void notifyIcon1_BalloonTipClicked(object sender, EventArgs e)
{
MessageBox.Show("Balon ipucuna tıklandı!");
// Burada ilgili mesajın veya uygulamanın açılması gibi bir işlem yapılabilir
}
private void notifyIcon1_BalloonTipClosed(object sender, EventArgs e)
{
Console.WriteLine("Balon ipucu kapatıldı.");
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
notifyIcon1.Visible = false;
notifyIcon1.Dispose();
}
}
3. Bağlam Menüsü (Context Menu) Ekleme
İkona sağ tıklandığında bir menü göstermek için ContextMenuStrip
bileşenini kullanırız.
using System;
using System.Windows.Forms;
using System.Drawing;
public partial class Form1 : Form
{
private NotifyIcon notifyIcon1;
private ContextMenuStrip contextMenuStrip1; // Tasarımcıda eklenen ContextMenuStrip
public Form1()
{
InitializeComponent();
notifyIcon1 = new NotifyIcon();
notifyIcon1.Icon = SystemIcons.Question; // Soru ikonu
notifyIcon1.Text = "Menülü Uygulama";
notifyIcon1.Visible = true;
// ContextMenuStrip'i oluştur ve menü öğelerini ekle (tasarımcıdan da yapılabilir)
contextMenuStrip1 = new ContextMenuStrip();
ToolStripMenuItem itemAc = new ToolStripMenuItem("Aç");
ToolStripMenuItem itemKapat = new ToolStripMenuItem("Kapat");
ToolStripMenuItem itemHakkinda = new ToolStripMenuItem("Hakkında");
contextMenuStrip1.Items.Add(itemAc);
contextMenuStrip1.Items.Add(itemHakkinda);
contextMenuStrip1.Items.Add(new ToolStripSeparator()); // Ayırıcı
contextMenuStrip1.Items.Add(itemKapat);
// Menü öğelerinin Click olaylarını bağla
itemAc.Click += (s, e) => { this.Show(); this.WindowState = FormWindowState.Normal; this.Activate(); };
itemKapat.Click += (s, e) => { Application.Exit(); }; // Uygulamayı kapat
itemHakkinda.Click += (s, e) => { MessageBox.Show("Bu uygulama Webkolog.net için yazılmıştır.", "Hakkında"); };
// NotifyIcon'a bağlam menüsünü ata
notifyIcon1.ContextMenuStrip = contextMenuStrip1;
this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// Eğer kullanıcı kapatma butonundan kapatıyorsa, ikonu gizle ve dispose et
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true; // Formu kapatmayı iptal et
this.Hide(); // Formu gizle
notifyIcon1.ShowBalloonTip(1000, "Uygulama Arka Planda", "Uygulama sistem tepsisinde çalışmaya devam ediyor.", ToolTipIcon.Info);
}
else
{
// Diğer kapatma nedenlerinde (örneğin Application.Exit()) ikonu dispose et
notifyIcon1.Visible = false;
notifyIcon1.Dispose();
}
}
}
Dikkat Edilmesi Gerekenler
- İkon Dosyası:
NotifyIcon
için mutlaka bir.ico
uzantılı ikon dosyası kullanmalısınız. Diğer resim formatları (PNG, JPG) düzgün çalışmayabilir veya hata verebilir. - Kaynak Yönetimi: Uygulamanız kapatılırken
NotifyIcon
nesnesininDispose()
metodunu çağırmayı unutmayın. Aksi takdirde, ikon sistem tepsisinde kalmaya devam edebilir veya bellek sızıntılarına neden olabilir. GenellikleFormClosing
olayında veya uygulamanın kapanış noktasında bu işlem yapılır. - Form Gizleme/Gösterim: Uygulamanızın ana formunu kapatmak yerine gizleyerek (
this.Hide()
) veNotifyIcon
'a çift tıklama olayında tekrar göstererek (this.Show()
) arka planda çalışmasını sağlayabilirsiniz.
Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 ile NotifyIcon
kontrolünün temel özelliklerini, balon ipuçları göstermeyi ve bağlam menüsü eklemeyi detaylı bir şekilde inceledik. NotifyIcon
, uygulamalarınızın arka planda çalışırken kullanıcıyla etkileşim kurmasını ve önemli bildirimler sunmasını sağlayan güçlü bir araçtır. Özellikle sistem tepsisinde yer alan yardımcı uygulamalar, izleme araçları veya bildirim sistemleri için vazgeçilmezdir. Umarım bu rehber, C# .NET Framework 4 ile uygulamalar geliştirirken size yardımcı olur. Bir sonraki yazımda, C# dilinin diğer önemli yapı taşlarını keşfetmeye devam edeceğiz. Webkolog.net'i takipte kalın!
Hepinize bildirimlerle dolu ve başarılı geliştirme süreçleri dilerim!
0 yorum:
Yorum Gönder