2008-10-28 24 views
12

Tôi đang tìm cách thêm nút đóng vào đối tượng .NET ToolTip tương tự với đối tượng NotifyIcon. Tôi đang sử dụng chú giải công cụ làm bóng chú thích được gọi là chương trình với phương thức Show(). Điều đó hoạt động tốt nhưng không có sự kiện onclick hoặc cách dễ dàng để đóng tooltip. Bạn phải gọi phương thức Hide() ở đâu đó trong mã của bạn và tôi muốn có chú giải công cụ có thể tự đóng. Tôi biết có một số tooltips bóng xung quanh mạng mà sử dụng quản lý và không được quản lý mã để thực hiện điều này với API cửa sổ, nhưng tôi thà ở lại trong thế giới NET thoải mái của tôi. Tôi có một ứng dụng bên thrid gọi ứng dụng .NET của tôi và nó đã bị treo khi cố gắng hiển thị chú giải công cụ không được quản lý.Thêm nút đóng (đỏ x) vào .NET ToolTip

Trả lời

4

Bạn có thể thử triển khai cửa sổ mẹo công cụ của riêng mình bằng cách ghi đè cửa sổ hiện tại của công cụ và tùy chỉnh hàm onDraw. Tôi chưa bao giờ thử thêm một nút nào, nhưng đã thực hiện các tùy chỉnh khác bằng chú giải công cụ trước đó.

1 class MyToolTip : ToolTip 
    2  { 
    3   public MyToolTip() 
    4   { 
    5    this.OwnerDraw = true; 
    6    this.Draw += new DrawToolTipEventHandler(OnDraw); 
    7 
    8   } 
    9 
    10   public MyToolTip(System.ComponentModel.IContainer Cont) 
    11   { 
    12    this.OwnerDraw = true; 
    13    this.Draw += new DrawToolTipEventHandler(OnDraw); 
    14   } 
    15 
    16   private void OnDraw(object sender, DrawToolTipEventArgs e) 
    17   { 
         ...Code Stuff... 
    24   } 
    25  } 
2

Bạn có thể thử ghi đè phương pháp CreateParams trong việc thực hiện của bạn của lớp ToolTip ... tức

protected override CreateParams CreateParams 
    { 
     get 
     { 
      CreateParams cp = base.CreateParams; 
      cp.Style = 0x80 | 0x40; //TTS_BALLOON & TTS_CLOSE 

      return cp; 
     } 
    } 
+0

Có ai xác nhận điều này có hiệu quả không? Nó trông như thế nào? – Justin

+0

Không. Vừa thử. :( –

2

Bạn có thể phân lớp lớp ToolTip với CreateParams của riêng bạn mà đặt phong cách TTS_CLOSE:

private const int TTS_BALLOON = 0x80; 
private const int TTS_CLOSE = 0x40; 
protected override CreateParams CreateParams 
{ 
    get 
    { 
     var cp = base.CreateParams; 
     cp.Style = TTS_BALLOON | TTS_CLOSE; 
     return cp; 
    } 
} 

Kiểu TTS_CLOSE cũng requires kiểu TTS_BALLOON và bạn cũng phải đặt thuộc tính ToolTipTitle trên chú giải công cụ.

Để kiểu này hoạt động, bạn cần bật các kiểu Điều khiển chung v6 using an application manifest.

Thêm mới "Ứng dụng Manifest File" và thêm dòng sau dưới > yếu tố < lắp ráp:

<dependency> 
    <dependentAssembly> 
    <assemblyIdentity 
     type="win32" 
     name="Microsoft.Windows.Common-Controls" 
     version="6.0.0.0" 
     processorArchitecture="*" 
     publicKeyToken="6595b64144ccf1df" 
     language="*" 
     /> 
    </dependentAssembly> 
</dependency> 

Trong Visual Studio 2012, ít nhất, công cụ này được bao gồm trong các mẫu mặc định nhưng nhận xét ra - bạn chỉ có thể bỏ ghi chú nó.

Tooltip with close button

Các vấn đề liên quan