2009-08-24 5 views
1

У меня есть диалоговое окно с элементами управления, которые выскочили, и когда элемент управления запущен над элементами управления, отображается всплывающая подсказка. Однако, если я закрою окно, то повторно отобразите его, никакие всплывающие подсказки не будут работать. Вот часть моего кода. Я инициализирую tooltipOn, когда форма загружена в null. Я сделал трассировку и tooltip1.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.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 (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

Это работало абсолютно! Я все еще не уверен, что происходит. Не могли бы вы объяснить мне, почему код работал в первый раз, когда моя форма отображается, но не вторая? – novacara

+0

На самом деле вы знаете что? Это работает, только если я не обработал элемент управления при первом отображении формы. – novacara

+0

Я думаю, что это связано с тем, что вы пытаетесь использовать ту же подсказку для нескольких элементов управления. Обычно каждый элемент управления получает свою собственную подсказку. Однако, как вы это делаете, вы создаете только одну всплывающую подсказку (из того, что я могу сказать), а затем просто перемещайте ее, в которой когда-либо управляют мышью. – Joseph

 Смежные вопросы

  • Нет связанных вопросов^_^