C#nedir?com
 
YAZAR HAKKINDA
Mehmet KAPLAN
Mehmet KAPLAN
http://mehmetkaplan.wordpress.com
İletişme geçmek için tıklayın.
1 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: Araç Çubuğu TaskbarItem WPF WPF Görev Çubuğu Programlama WPF Minyatür WPF Overlay WPF Progress WPF Taskbar WPF Thumbnail Button WPF Windows 7 Kodlama Mehmet KAPLAN
 
YAZI HAKKINDA
Türü : Serbest Köşe (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : Kodlama
Yayınlanma Tarihi : 22.9.2010
Okunma Sayısı : 49858
Yorum Sayısı : 6     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Burak Selim Şenyurt
Asp.Net Core'da Bir WebSocket Macerası 24.10.2017
Burak Selim Şenyurt
.NET Core 2.0 ile Basit Bir Web API Geliştirmek 24.10.2017
Turhal Temizer 'in Blogu
ChatBot UI Sample 24.10.2017
Turhal Temizer 'in Blogu
C# – IRR Function 24.10.2017
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
WPF - Windows 7 Görev Çubuğu Programlama
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon

Bu makalemizde Windows 7'nin Görev Çubuğu'nu nasıl programlayabileceğimizi \ kullanabileceğimizi öğrenmeye çalışacağız.

WPF

Windows 7'nin bizi belki de en etkileyici özelliklerinden biri, Görev Çubuğu (taskbar) için getirilen yenilikler olmuştur. Bir ana pencere altında tüm pencerelerin toplanamabilmesi, pencerede yapılan işleme göre (kopyalama vb.) görev çubuğundaki simgenin ilerlemesi \ simge değiştirmesi gibi yeniliklek başı geçiyor. Bir simgenin üzerine tıklandığında o pencereye ait küçük bir pencereciğin acılması ve hatta önizlemeye ait düğmeler (button) cabası (resimde görüldüğü gibi.). :)

"Windows Xp ve Windows Vista'da bu işlemler nasıl yapılıyordu?" sorusunun cevabıysa "yoktu.". Windows 7'de olmasının nedeniyse gereksinimden çok kolaylık ve göze hoş görünmesidir. Lafın belini bükmeden ilerleyelim:

Visual Studio 2010 ortamında yeni bir WPF tasarısı (proje) oluşturalım:


Yeni tasarımızı oluşturduktan sonra Window'umuzu aşağıdaki gibi tasarlayalım:


İşleyici (Progress)

İşleyici Türleri adı altında bulunan dört adet düğmenin (button) contenti, aynı zamanda Görev Çubuğu'nda kullanılan işleyicilerinin (progress) türleridir. Bu işleyici türleri TaskBarItemInfoProgressState enum sabitinde tutuluyor. Bu enumsa System.Windows.Shell isim uzayında yer alıyor. Yani birazdan yapacağımız örnekleri gerçekleştirmek için System.Windows.Shell'i isim uzayına eklememiz gerekiyor. TaskBarkItemInfo sınıfının da nereden geldiğine bakmakta yarar var:

System.Windows.Shell'in üyesi olan bu sınıf, System.Windows.Freezable sınıfından türetilmiştir. Metod ve özellikleri aşağıdaki gibidir:


Bu kadar kuramsal (teorik) bilgiden sonra işleyici (progress) türlerinin nasıl kullanıldığını uygulamaya başlayarak görelim. Uygulamamızın C# tarafına geçmeden önce XAML tarafında şu şekilde bir tanımlama yapıyoruz. Bu yaptığımız tanımlama, XAML'ın görev çubuğuyla eşleşmesini sağlıyor:

    <Window.TaskbarItemInfo>
        <TaskbarItemInfo/>
    </Window.TaskbarItemIn

Artık C# tarafına geçmek için önümüzde hiçbir engel yok! Normal isimli düğmenin (button) Click olayına (event) şu kodları yazıyoruz:

            TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Normal;
            TaskbarItemInfo.ProgressValue = Convert.ToDouble(txtDeger.Text);

TaskbarItemInfo'daki ProgressState özelliği dikkatimizi çekmiş olmalı. Bu özellik, işleyicinin türünü belirlememizi sağlıyor. TaskbarItemProgressState enumuysa işleyici türlerini tutuyor. ProgressValue özelliğiyse double türünden olup, işleyicinin değerini tutuyor. Tutacağı değeriyse textBox'tan alıyoruz. Bu programı derleyip çalıştırdığımızda ve normal düğmesine tıkladığımızda sonuç aşağıdaki gibi olacaktır:

Indeterminate türümüze geçiyoruz. Bu işleyici türü bize Windows 98'ten beri eşlik eden, sürekli olarak gidip gelen şerit şeklindedir. Indeterminate adlı düğmemizin Click olayına aşağıdaki kodu yazıp sonuca bakalım:

            TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Indeterminate;


Ben geçişi sırasında zor yakaladığımı söylemek isterim. :) Sırada Paused türümüz var. Adından da anlaşılacağı üzere işleyicinin durdurulmasını sağlıyor. Pause isimli düğmemizin Click olayındaki kodlar ve sonuç (0,7 değeriyle) aşağıdaki gibi olacaktır:

            TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Paused;
            TaskbarItemInfo.ProgressValue = Convert.ToDouble(txtDeger.Text);


ve Error! Normal ve Indeterminate türleri yeşil, Paused sarı ve tahmin edebileceğiniz gibi Error kırmızı bir şeride sahip. Error isimli düğmemizin Click olayındaki kodlar ve sonuç aşağıdaki gibi olacaktır:

            TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Paused;
            TaskbarItemInfo.ProgressValue = Convert.ToDouble(txtDeger.Text);


Overlay

Overlay, görev çubuğundaki simgeye küçük bir resim kondurmamızı sağlıyor. Overlay simgesi, simgenin sağ alt köşesinde küçük bir resim olarak görünüyor. Bu özellik TaskbarItemInfo sınıfında yer alıyor. ImageSource türünden değer alan Overlay'in için iki düğme (button) oluşturalım:


Kodlarımızı bu şekilde yazdıktan sonra overlay ekle isimli düğmemizin Click olayına (event) şu cümleyi yazıyoruz:

      TaskbarItemInfo.Overlay = image1.Source;

Overlay kaldır isimli düğmemizin Click olayına da şu cümleyi yazıyoruz:

      TaskbarItemInfo.Overlay = null;

Bu programı derleyip çalıştırdığımızda overlay eklenmiş ve eklenmemiş sonuçları aşağıdaki gibi olacaktır:

Eklenmiş: (Penguenimizi görebiliyoruz.:))

Eklenmemiş:

Peki Overlay simgesini neden kullanmalıyız ya da ne gibi işlerimize yarar? Bir tasarınız (proje) var ve bu tasarıda kullanıcıya gelen iletiler, çağrı vb. uyarılar MessageBox ya da alert nesneleriyle gerçekleştiriliyor. Peki ileti \ çağrı ya da x işlem sayısını Overlay simgesi olarak göstersek çok daha şık olmaz mıydı? Bana olurdu gibi geliyor. :) Bir örnek senaryo daha; hata ya da benzeri bir durum ortaya çıktığında o duruma göre Overlay simgesini değiştirebiliriz.

Thumbnail Button (Minyatür Düğme)

Thumbnail Button, yani benim Türkçeleştirmemle minyatür düğmeler; Windows 7'de açık bir pencerenin görev çubuğundaki simgesinin üzerine gelindiğinde görünen küçük düğmelerdir. Aşağıdaki Windows Media Player önizlemesine bakarak daha iyi anlayabiliriz:

Önceki, oynat ve sonraki simgeli bu minyatür düğmeleri neden kullanmalıyız? Örneğin bir tasarınız (proje) var ve kullanıcı bir pencerede çalışırken birçok kez diğer pencereye bakmak zorunda kalıyor ya da benzeri bir durum söz konusu. Elbette CTRL+Tab ya da benzeri bir tuş birleşimi (kombinasyon) ayarlanıp bu işlemi gerçekleştirebilir ama kullanıcı bu tür olayların hep kendisini zorladığını düşündüğünden bu çözümden vazgeçip, diğer senaryoya geçiyoruz. Kullanıcı diğer pencerenin üzerine geldiğinde (Windows 7 için söylüyorum) o veriyi okuyabiliyor ya da istediğini alabiliyor diyelim. Kullanıcı gördüğü veriyi ya da x nesneyi ileri ya da geri götürebilir, başka işlemler gerçekleştirebilir. Bunun için pencereyi açmak yerine küçük düğmelerimiz pekala yardımcı olabilir. Küçük araç çubuğu da denen bu küçük düğmeleri, ThumbButtonInfo sınıfını inceyelerek başlayalım:

ThumbButtonInfo, System.Windows.Shell isim uzayında yer alır ve Freezable, ICommandSource sınıflarından türetilmiştir. Özellik, metod ve olayları (event) aşağıdaki gibidir:

Tasarımızı yeni bir Window ekleyelim ve XAML tarafında kullanacağımız düğmelerin kaynaklarını belirtelim:

Ben yalnızca renk belirtip, kare şeklinde olmasını istedim. Elbette istediğiniz bir simgeyi kullanabilirsiniz. Şimdi de ekleyeceğimiz küçük düğmeleri belirtiyoruz:

ImageSource kısmına biraz önce söylediğimiz gibi herhangi bir simge de atayabilirsiniz. Description özelliği, üzerine gelindiğinde görüntülenecek açıklamadır. Programı bu şekilde derleyip çalıştıralım ama Overlay Window'umuzun varsayılan pencere olması için App.Xaml'daki StartupUri'yi Overlay.xaml olarak değiştirelim ve sonuç:

Elbette görüntülenmesi çok fazla işimize yaramayacaktır. Asıl önemli olan düğmemize tıklandığına Yapılacak olan işlemdir. Bunun için Description ve ImageSource değerlerimizi atadığımız yere bir de Click="btnKirmizi_Click" şeklinde tanımlama yapıyoruz. C# tarafında btnKirmizi_Click adın da bir olay yaratıyoruz:

  private void btnKirmizi_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Keşke Dünya Kupası'nda Türkiye de oynasaydı...", "Kırmızı - Beyaz!");
        }

Artık kırmızı'mıza tıklayarak sonucumuza bakabiliriz:


Bu makalede öğrenmeye ve kullanmaya çalıştığımız yenilikler, aynı zamanda C# ve VB.NET'te de çalışabilmekte yalnız söz dizimi farkları bulunmaktadır. Öğrenmeye ve kullanmaya çalıştığımız yeniliklere maddeleyelim:

·         İşleyiciler (progress),

·         Overlay simgesi (icon),

·         Thumbnail Button (Minyatür \ küçük düğme) ya da küçük araç çubuğu.

Kaynaklar

 MSDN

Pete BROWN

Windows Client

Umarım yararlı olabilmişimdir.

Hoşçakalın.

Mehmet KAPLAN
mehmet.kaplan@hotmail.com.tr

Makale:
WPF - Windows 7 Görev Çubuğu Programlama Kodlama Mehmet KAPLAN
  • Yazılan Yorumlar
  • Yorum Yaz
OCA
11
2011
Mesela Bi form olarak algılayalım masaüstünde bi nesnemiz var onu sürekleyip oraya yerleştirmek gibi mesela taskbara attığımız bi simgeyi düşünelim.
OCA
7
2011
Ahmet Bey, sorunuzu anladığımı söyleyemeyeceğim. Daha açık olur musunuz?
OCA
7
2011
Öncelikle çok teşekkürler çok güzel bir bilgi paylaşımı olmuş. Lakin benim bir sorum olacaktı. Peki biz taskbar'a istediğimiz bir iconu yerleştirebiliyorduk bunun kodlaması nasıl olacak bunun yanında ek bilgi olarak verirseniz sevinirim örnek olarak bir adet daha taskbar koymak.
ARA
7
2010
pardon el alışkanlığı WindowsForm seçiyormuşum problemimi hallettim..VS9 da hızlı yazarken 8 yerine 9 yazmışım k bakma:))Resimleri daha fazla inceliyince anladım nerde hatam olduğunu.. bide gerçekten VS8 de System.Windows.Shell namespace i yok..Şu anda sırf bunun için Visual Studio 10 un trialini indirdim:)
ARA
7
2010
Tam olarak yapmak istediğiniz işlem nedir? Yani ne yapmak istiyorsunuz da referanslara ekleme gereği duyuyorsunuz? Bir de vs9 dediğiniz? Vs08 ve 10 var.
ARA
7
2010
hocam afedersin bu namespace kısmını ekleyemiyorum reference lara vsairelerede baktım fakat bu name space kısmı VS9 da yok sanırım yanılıyormuyum?_?
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor