Làm cách nào để thêm gợi ý hoặc chú giải công cụ vào nhãn trong C # Winforms?


Câu trả lời:


112

Trước tiên, bạn phải thêm ToolTipđiều khiển vào biểu mẫu của mình. Sau đó, bạn có thể đặt văn bản mà nó sẽ hiển thị cho các điều khiển khác.

Đây là ảnh chụp màn hình cho thấy nhà thiết kế sau khi thêm một ToolTipđiều khiển được đặt tên toolTip1:

nhập mô tả hình ảnh ở đây


19
Chà, điều đó có vẻ phức tạp / phản trực giác, Yuck.
B. Clay Shannon

@ClayShannon Theo một cách nào đó tôi cho là như vậy. Nhưng thiết kế có phần trang nhã. Một số điều khiển sẽ không bao giờ muốn các mẹo công cụ. Bằng cách này, ToolTipđiều khiển có thể tự đăng ký cho các sự kiện di chuột qua và hiển thị văn bản thích hợp tùy thuộc vào sự kiện được nêu ra. Tất cả điều này xảy ra trong nền.
Yuck

1
Tôi đồng ý. Nó cũng cho phép bạn sử dụng cùng một điều khiển chú giải công cụ cho nhiều điều khiển.
Mark Ainsworth

@MarkAinsworth vì một bình luận nói rằng nó tốt và một bình luận rằng nó xấu, có lẽ bạn nói rằng bạn đồng ý nó tốt hay đồng ý nó xấu? . Tôi cho rằng bạn đang nói rằng bạn đồng ý là tốt.
barlop 20/02/18

Tôi nghĩ đây là một thiết kế tồi vì nó chỉ hỗ trợ một chú giải công cụ tĩnh. Bạn sẽ cập nhật chú giải công cụ như thế nào trong thời gian chạy?
Arvo Bowen

90
yourToolTip = new ToolTip();
//The below are optional, of course,

yourToolTip.ToolTipIcon = ToolTipIcon.Info;
yourToolTip.IsBalloon = true;
yourToolTip.ShowAlways = true;

yourToolTip.SetToolTip(lblYourLabel,"Oooh, you put your mouse over me.");

Đừng quên loại bỏ chú giải công cụ nếu bạn làm điều này nhiều trong mỗi lần di chuột qua, bạn sẽ làm rò rỉ các chốt điều khiển cho đến khi GC gọi trình hoàn thiện trên chú giải công cụ cũ hơn.
drake7707 30/12/13

21
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip( Label1, "Label for Label1");

15

chỉ là một cách khác để làm điều đó.

Label lbl = new Label();
new ToolTip().SetToolTip(lbl, "tooltip text here");

5

Chỉ để chia sẻ ý tưởng của tôi ...

Tôi đã tạo một lớp tùy chỉnh để kế thừa lớp Nhãn. Tôi đã thêm một biến private được chỉ định làm lớp Tooltip và thuộc tính công khai, TooltipText. Sau đó, cung cấp cho nó một phương thức ủy quyền MouseEnter. Đây là một cách dễ dàng để làm việc với nhiều điều khiển Nhãn và không phải lo lắng về việc chỉ định điều khiển Chú giải công cụ của bạn cho mỗi điều khiển Nhãn.

    public partial class ucLabel : Label
    {
        private ToolTip _tt = new ToolTip();

        public string TooltipText { get; set; }

        public ucLabel() : base() {
            _tt.AutoPopDelay = 1500;
            _tt.InitialDelay = 400;
//            _tt.IsBalloon = true;
            _tt.UseAnimation = true;
            _tt.UseFading = true;
            _tt.Active = true;
            this.MouseEnter += new EventHandler(this.ucLabel_MouseEnter);
        }

        private void ucLabel_MouseEnter(object sender, EventArgs ea)
        {
            if (!string.IsNullOrEmpty(this.TooltipText))
            {
                _tt.SetToolTip(this, this.TooltipText);
                _tt.Show(this.TooltipText, this.Parent);
            }
        }
    }

Trong phương thức InitializeComponent của biểu mẫu hoặc điều khiển người dùng (mã Designer), hãy gán lại điều khiển Nhãn của bạn cho lớp tùy chỉnh:

this.lblMyLabel = new ucLabel();

Ngoài ra, hãy thay đổi tham chiếu biến private trong mã Designer:

private ucLabel lblMyLabel;

Nhưng không phải mã Designer được tạo lại mỗi khi người dùng thay đổi nội dung nào đó bằng Trình thiết kế trực quan của Biểu mẫu?
Robert Synoradzki
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.