2009-08-24 7 views
1

컨트롤이 팝업 된 대화 상자가 있고 컨트롤 위에 컨트롤이 마우스로 올려 져있을 때 툴팁이 표시됩니다. 그러나 상자를 닫은 다음 다시 표시하면 툴팁이 작동하지 않습니다. 여기 내 코드의 일부입니다. 폼이 null로로드 될 때 tooltipOn을 초기화하고 있습니다. 추적 및 툴팁 1을 수행했습니다 .Show()는 단순히 표시되지 않는 두 번째 호출됩니다. 왜 그런가?폼이 만들어지는 두 번째 시간에 툴팁이 표시되지 않습니다.

private void Panel1_MouseMove(object sender, MouseEventArgs e) 
{ 
    Control ctrl = null; 

    if (sender == Panel1) 
     ctrl = ((Control)sender).GetChildAtPoint(e.Location); 
    else 
     ctrl = (Control)sender; 

    if (ctrl != null) 
    { 
     if (tooltipOn != ctrl) 
     { 
      toolTip1.Show(toolTip1.GetToolTip(ctrl), ctrl, ctrl.Width/2, ctrl.Height/2); 
      tooltipOn = ctrl; 
     } 
    } 
    else 
    { 
     toolTip1.Hide(this); 
     tooltipOn = null; 
    } 
} 

답변

2

좋습니다 ... 미래에이 게시물이 유용하다고 생각하는 사람을 위해이 문제에 대한 해결책을 제시 한 후 아래에 게시됩니다. 왜 이것이 필요한 것은 저 밖에 있습니다.

절대적 일

toolTip1.Show(toolTip1.GetToolTip(ctrl), ctrl, ctrl.Width/2, ctrl.Height/2); 
toolTip1.Hide(ctrl); 
toolTip1.Show(toolTip1.GetToolTip(ctrl), ctrl, ctrl.Width/2, ctrl.Height/2); 
2

아마도 두 개의 다른 컨트롤에 툴팁을 두 번 표시 할 수 없기 때문일 수 있습니까?

당신의 if 문 안에이 시도 :

if (tooltipOn != ctrl) 
{ 
    //your moving the tooltip to a different control, 
    //hide it from the other first. 
    if (tooltipOn != null) 
     toolTip1.Hide(tooltipOn); 

    toolTip1.Show(
     toolTip1.GetToolTip(ctrl), ctrl, ctrl.Width/2, ctrl.Height/2 
    ); 

    tooltipOn = ctrl; 
} 

을 그 나는 확실히 각 컨트롤은 이벤트 기간 동안의 자신을 얻을 수 있도록 모두 완전히 다른 도구 팁을 newing을 시도 할 것입니다 작동하지 않는 경우.

+0

로 변경

toolTip1.Show(toolTip1.GetToolTip(ctrl), ctrl, ctrl.Width/2, ctrl.Height/2); 

! 나는 아직도 무엇이 계속되고 있는지 확실하지 않다. 내 양식이 처음 나타나는 이유는 무엇이며 두 번째 코드는 보이지 않는 이유를 설명해 주시겠습니까? – novacara

+0

사실 당신은 무엇을 압니까? 양식이 처음 표시 될 때 컨트롤 위에 마우스를 놓지 않은 경우에만 작동합니다. – novacara

+0

여러 컨트롤에서 동일한 툴팁을 사용하려고한다는 사실과 관련이 있다고 생각합니다. 일반적으로 각 컨트롤에는 고유 한 툴팁이 있습니다. 그러나, 당신이 그것을하는 방식으로 당신은 하나의 툴팁 (내가 말할 수있는 것에서 만)을 생성하고, 그 위에 마우스를 가지고있는 툴팁을 움직일 수 있습니다. – Joseph

관련 문제