2010-03-11 12 views
12

Tôi đã làm việc với NotifyIcon để hiển thị biểu tượng trên thanh tác vụ. Chương trình này không có Biểu mẫu Windows. Tôi có lẽ có thể tạo ra một và làm cho nó vô hình nhưng tôi đã hy vọng để tránh nó. Các hàm ToolTip gắn liền với NotifyIcon có phần thiếu, và một trong những chuyên gia ở đây đề nghị tôi xem xét chức năng ToolTip. Có thể đính kèm ToolTip vào một biểu mẫu. Có thể đính kèm nó vào NotifyIcon không? Tôi đang cố gắng làm điều này:Kết hợp NotifyIcon và ToolTip

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

Và tôi nhận được lỗi "không thể chuyển đổi từ 'System.Windows.Forms.NotifyIcon' thành 'System.Windows.Forms.Control' Có cách nào để chuyển đổi.? tôi cũng đã cố gắng:

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

nhưng một container là rõ ràng không phải là một sự kiểm soát hợp lệ hoặc tôi xin lỗi vì tổng tôi thiếu hiểu biết về cách thức này có thể hoặc không thể làm việc

Cảm ơn trước

...
+1

NotifyIcons và khay hệ thống dường như trên có lối thoát trong Windows 7, công cụ thanh xem trước với các nút và các menu đang trên Có cách thay vào đó. Bạn có thể muốn xem xét phần mềm mới này. –

Trả lời

1

NotifyIcon được sử dụng cho biểu tượng khay hệ thống mà bạn thấy ở góc dưới cùng bên phải của màn hình, việc sử dụng ToolTip chỉ dành cho các điều khiển như hộp văn bản, hộp kiểm, v.v ... ví dụ, giả sử có một trường hợp TextBox gọi là 'TextBox1', về hình thức hơn thế này sẽ làm việc:

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

Bây giờ, khi bạn di chuột qua các textbox, một tooltip được hiển thị ...

1

tôi không chắc chắn bạn có thể đặt một chú giải công cụ trực tiếp trên biểu tượng thông báo. Nó giống như thiết lập thuộc tính văn bản trên chính biểu tượng thông báo. Có một số hạn chế đối với văn bản biểu tượng thông báo. Nó được giới hạn trong 128 ký tự và sẽ chỉ ở lại trong một khoảng thời gian ngắn. Nếu bạn muốn hiển thị thêm thông tin trong một khoảng thời gian dài hơn, bạn nên xem xét thuộc tính văn bản bóng của biểu tượng thông báo. Tôi rất khuyên bạn nên đọc trang MSDN nó khá hữu ích.

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

+0

* Lưu ý: Theo tài liệu cho Văn bản dưới liên kết bạn đã cung cấp ở trên, giới hạn cho Văn bản là 63 ký tự (xem phần Ngoại lệ): http://msdn.microsoft.com/en-us/library/system.windows .forms.notifyicon.text.aspx –

3

Biểu tượng khay không hỗ trợ mẹo công cụ hình vuông, chỉ bóng bay. Kinda có ý nghĩa, các biểu tượng thường khá gần nhau vì vậy sẽ rất khó để xem biểu tượng nào tạo ra đầu mà không có "gốc" trên quả bóng. Sử dụng thuộc tính NotifyIcon.BalloonTipText.

1

Bạn không nên.

NotifyIcon được sử dụng để hiển thị thông báo, trong khi ToolTip được sử dụng để hiển thị thông tin về hoạt động hiện tại của người dùng, nó nên được sử dụng "tại chỗ".

Kiểm tra các hướng dẫn giao diện người dùng:

  1. Notifications
  2. Balloons
+1

Đó là lý thuyết. Thực tế của thập kỷ qua hay như vậy là các biểu tượng thông báo không thực sự được sử dụng cho các thông báo, mà là cho các giao diện người dùng cấu hình thấp. –

26

Một câu trả lời muộn, nhưng có lẽ có ích cho người khác.

NotifyIcon.Text = "ToolTipText"; 
1

Tất cả biểu tượng khay trên máy tính của tôi đều có chú giải công cụ. Bạn cần phải tạo NotifyIcon của bạn bằng cách sử dụng constructor chấp nhận một Component làm đối số. Nó hiển thị thuộc tính NotifyIcon.Text.

tôi đã có thể tạo một trang bằng mã ví dụ ở đây: 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

Nói chung, bạn muốn đặt mã thích hợp từ liên kết trong câu trả lời thay vì chỉ bao gồm liên kết. –