2010-03-11 23 views
12

Görev çubuğunda bir simge göstermek için NotifyIcon ile çalışıyorum. Bu program Windows formu vardır. Belki bir tane oluşturabilirim ve onu görünmez yapabilirdim ama bundan kaçınmayı umuyordum. NotifyIcon'a eklenen ToolTip işlevleri biraz eksiktir ve buradaki uzmanlardan biri, ToolTip işlevine bakmamı önerdi. ToolTip'in bir forma eklenmesi mümkündür. Sadece NotifyIcon'a eklemek mümkün mü? Bunu çalışıyorum:NotifyIcon ve ToolTip'i birleştir

NotifyIcon CTicon = new NotifyIcon(); 
ToolTip toolTip = new ToolTip(); 
toolTip.SetToolTip(CTicon, "Test"); 

Ve hatası " 'System.Windows.Forms.Control' ile 'System.Windows.Forms.NotifyIcon' dan dönüştüremezsiniz dönüştürmek için bir yolu var mı olsun.?

toolTip.SetToolTip(CTicon.Container, "Test"); 

ama bir kap görünüşe ya geçerli bir denetim değil bu ya çalışmıyor olabilir nasıl anlayış benim toplam eksikliği için özür

peşin

: Ben de denedim...
+1

NotifyIcons ve sistem tepsisi Windows 7'de orada çıkış yolu üzerinde olduğu görülüyor, düğmeler ve menüler ile araç çubuğu önizleme orada yolda yerine. Yeni yazılım için bunu dikkate almak isteyebilirsiniz. –

cevap

1

NotifyIcon, ekranın sağ alt köşesinde gördüğünüz sistem tepsisi simgesi için kullanılır, ToolTip kullanımı sadece metin kutuları, onay kutuları vb. Gibi kontroller içindir ... örneğin, bir TextBox örneğinin olduğunu varsayalım

 
toolTip1.SetToolTip(textBox1, "Hello World"); 

Şimdi, fare üzerinde metin, bir araç ipucu gösterildiğinde ...

1

sana bir ayarlayabilirsiniz emin değilim: çalışacak bundan daha formda, 'textBox1' denilen Bir bildirim simgesine doğrudan araç ipucu. Bildirim özelliğini kendisinin belirlediği metin özelliğini ayarlamakla aynı şey. Bildirim simgesi metninde bazı sınırlamalar vardır. 128 karakterle sınırlıdır ve sadece kısa bir süre kalacaktır. Daha uzun bir süre daha fazla bilgi görüntülemek isterseniz, bildirim simgesinin balon metin özelliğine bakmanız gerekir. Oldukça yararlı MSDN sayfasını okumanızı tavsiye ederim.

http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.aspx

+0

* Not: Yukarıda verdiğiniz bağlantı altındaki Metin belgelerine göre, Metin sınırı 63 karakterdir (Özel Durumlar bölümüne bakın): http://msdn.microsoft.com/en-us/library/system.windows .forms.notifyicon.text.aspx –

3

Tepsi simgeleri kare araç ipuçları, sadece balonları desteklemez. Kinda mantıklı, ikonlar genellikle birbirine çok yakındır, bu yüzden hangi ikonun, uçtaki balonu "gövde" olmadan oluşturduğunu görmek zor olacaktır. NotifyIcon.BalloonTipText özelliğini kullanın.

1

Yapmamalısınız.

NotifyIcon bildirimleri göstermek için kullanılır, ancak ToolTip kullanıcının geçerli etkinliği hakkındaki bilgileri göstermek için kullanılır, "yerinde" kullanılmalıdır.

Kontrol kullanıcı arayüzü yönergeleri:

  1. Notifications
  2. Balloons
+1

Bu teori. Geçtiğimiz on yılın pratiği, simgelerin aslında bildirimler için değil, düşük profilli UI'ler için kullanıldığını bildirmesi olmuştur. –

26

Gecikmiş bir cevap, ama diğerleri için belki yararlı.

NotifyIcon.Text = "ToolTipText"; 
1

Bilgisayarımdaki tüm tepsi simgelerinin araç ipuçları vardır. Bir Bileşeni argüman olarak kabul eden kurucuyu kullanarak NotifyIcon'unuzu oluşturmanız gerekir. NotifyIcon.Text özelliğini görüntüler.

Burada örnek kodu kullanarak bir tane oluşturmak başardı: http://msdn.microsoft.com/en-us/library/1by05f8d.aspx

using System; 
using System.Drawing; 
using System.Windows.Forms; 

public class Form1 : System.Windows.Forms.Form 
{ 
    private System.Windows.Forms.NotifyIcon notifyIcon1; 
    private System.Windows.Forms.ContextMenu contextMenu1; 
    private System.Windows.Forms.MenuItem menuItem1; 
    private System.ComponentModel.IContainer components; 

    [STAThread] 
    static void Main() 
    { 
     Application.Run(new Form1()); 
    } 

    public Form1() 
    { 
     this.components = new System.ComponentModel.Container(); 
     this.contextMenu1 = new System.Windows.Forms.ContextMenu(); 
     this.menuItem1 = new System.Windows.Forms.MenuItem(); 

     // Initialize contextMenu1 
     this.contextMenu1.MenuItems.AddRange(
        new System.Windows.Forms.MenuItem[] {this.menuItem1}); 

     // Initialize menuItem1 
     this.menuItem1.Index = 0; 
     this.menuItem1.Text = "E&xit"; 
     this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click); 

     // Set up how the form should be displayed. 
     this.ClientSize = new System.Drawing.Size(292, 266); 
     this.Text = "Notify Icon Example"; 

     // Create the NotifyIcon. 
     this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); 

     // The Icon property sets the icon that will appear 
     // in the systray for this application. 
     notifyIcon1.Icon = new Icon("appicon.ico"); 

     // The ContextMenu property sets the menu that will 
     // appear when the systray icon is right clicked. 
     notifyIcon1.ContextMenu = this.contextMenu1; 

     // The Text property sets the text that will be displayed, 
     // in a tooltip, when the mouse hovers over the systray icon. 
     notifyIcon1.Text = "Form1 (NotifyIcon example)"; 
     notifyIcon1.Visible = true; 

     // Handle the DoubleClick event to activate the form. 
     notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick); 

    } 

    protected override void Dispose(bool disposing) 
    { 
     // Clean up any components being used. 
     if(disposing) 
      if (components != null) 
       components.Dispose();    

     base.Dispose(disposing); 
    } 

    private void notifyIcon1_DoubleClick(object Sender, EventArgs e) 
    { 
     // Show the form when the user double clicks on the notify icon. 

     // Set the WindowState to normal if the form is minimized. 
     if (this.WindowState == FormWindowState.Minimized) 
      this.WindowState = FormWindowState.Normal; 

     // Activate the form. 
     this.Activate(); 
    } 

    private void menuItem1_Click(object Sender, EventArgs e) { 
     // Close the form, which closes the application. 
     this.Close(); 
    } 
} 
+0

Genel olarak, ilgili kodu sadece bağlantıyı eklemek yerine cevabınızdaki bağlantıdan koymak istersiniz. –

İlgili konular