在运行时,我创建一个所有者绘制工具提示,在弹出事件中设置工具提示窗口的大小,并在绘制事件中设置文本。

public void NewLabel(string aText)
{
  ToolTip tt = new ToolTip();
  tt.Popup += new PopupEventHandler(tt_Popup);
  tt.Draw += new DrawToolTipEventHandler(tt_Draw);

  tt.BackColor = Color.White;
  tt.AutomaticDelay = 100;
  tt.AutoPopDelay = 35000;
  tt.IsBalloon = false;
  tt.OwnerDraw = true;
  tt.SetToolTip(aLabel, sToolTip);
}

public void tt_Popup(object sender, PopupEventArgs e)
{
  e.ToolTipSize = new Size(e.ToolTipSize.Width + 300, e.ToolTipSize.Height + 200);
}

public void tt_Draw(object sender, DrawToolTipEventArgs e)
{
  e.DrawBackground();
  e.DrawBorder();
}


这可以正常工作,但是问题是,如果我的工具提示绘制事件是由屏幕底部的控件触发的,则该工具提示不会像标准工具提示那样自动地在可视区域中设置。

任何的想法?

最佳答案

工具提示将检查其矩形是否在屏幕上,并在调用Show时根据需要移动,使用其现有大小。这发生在弹出窗口之前。该框架确实会查看您返回的工具提示大小,但是它用于调整宽度和高度,而不是在不再适合窗口时重新定位窗口。

我没有尝试过,但我认为您将不得不自行移动弹出窗口以确保其保持在屏幕上。

关于c# - 如何设置所有者绘制工具提示的位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11794590/

10-15 23:46