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.