C # Winforms의 레이블에 힌트 또는 도구 설명을 추가하려면 어떻게해야합니까?


답변:


112

ToolTip먼저 폼에 컨트롤 을 추가 해야합니다. 그런 다음 다른 컨트롤에 표시 할 텍스트를 설정할 수 있습니다.

다음 ToolTip은 이름이 지정된 컨트롤을 추가 한 후 디자이너를 보여주는 스크린 샷 입니다 toolTip1.

여기에 이미지 설명 입력


19
와우, 복잡하고 반의 사적인 것 같군요, Yuck.
— B. Clay Shannon

@ClayShannon 내가 생각하는 방식으로. 그러나 디자인은 다소 우아합니다. 일부 컨트롤은 도구 설명을 원하지 않습니다. 이렇게하면 ToolTip컨트롤 이 마우스 오버 이벤트에 대해 자신을 등록하고 발생한 이벤트에 따라 적절한 텍스트를 표시 할 수 있습니다. 이것은 모두 백그라운드에서 발생합니다.
— 윽

1
나는 동의한다. 또한 여러 컨트롤에 대해 동일한 도구 설명 컨트롤을 사용할 수 있습니다.
— Mark Ainsworth 2015

@MarkAinsworth 하나의 댓글은 그것이 좋다고 말하고 하나는 나쁘다고 말했기 때문에 아마도 당신은 그것이 좋다고 동의하는지 또는 나쁘다는 것에 동의하는지 진술합니까? . 나는 당신이 그것이 좋다는 데 동의한다고 말하는 것 같습니다.
— barlop

정적 툴팁 만 지원하기 때문에 잘못된 디자인이라고 생각합니다. 런타임에 툴팁을 어떻게 업데이트 하시겠습니까?
— Arvo Bowen 2018

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.");

마우스를 올릴 때마다이 작업을 많이 수행하면 툴팁을 삭제하는 것을 잊지 마십시오. GC가 이전 툴팁에서 종료자를 호출 할 때까지 핸들이 누출됩니다.
— drake7707

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

15

또 다른 방법입니다.

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

5

내 아이디어를 공유하기 위해 ...

Label 클래스를 상속하기 위해 사용자 지정 클래스를 만들었습니다. Tooltip 클래스와 공용 속성 TooltipText로 할당 된 개인 변수를 추가했습니다. 그런 다음 MouseEnter 대리자 메서드를 제공했습니다. 이것은 여러 Label 컨트롤로 작업하는 쉬운 방법이며 각 Label 컨트롤에 대해 도구 설명 컨트롤을 할당하는 것에 대해 걱정할 필요가 없습니다.

    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);
            }
        }
    }

폼 또는 사용자 정의 컨트롤의 InitializeComponent 메서드 (디자이너 코드)에서 Label 컨트롤을 사용자 지정 클래스에 다시 할당합니다.

this.lblMyLabel = new ucLabel();

또한 Designer 코드에서 개인 변수 참조를 변경하십시오.

private ucLabel lblMyLabel;

그러나 사용자가 Form 비주얼 디자이너를 사용하여 무언가를 변경할 때마다 디자이너 코드가 다시 생성되지 않습니까?
— Robert Synoradzki
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.