在运行时,我创建一个所有者绘制工具提示,在弹出事件中设置工具提示窗口的大小,并在绘制事件中设置文本。
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/