У меня есть форма с Opacity
меньше 1,0. У меня есть подсказка, связанная с меткой на форме. Когда я наводю указатель мыши на метку, всплывающая подсказка показывает в форме вместо над формы. Если я оставлю значение «Непрозрачность» по умолчанию равным 1,0, всплывающая подсказка будет отображаться поверх формы. Тем не менее, моя форма, очевидно, больше не прозрачна. ; -)
Я попытался вручную отрегулировать положение всплывающей подсказки с помощью SetWindowPos()
и создать всплывающую подсказку «вручную» с помощью CreateWindowEx()
, но проблема остается. Это заставляет меня подозревать, что это проблема Win32 API, а не проблема с реализацией Windows Forms, которая работает поверх Win32.
Почему всплывающая подсказка появляется под формой, и, что более важно, как заставить ее отображаться поверх формы, где она должна быть?
Редактировать : похоже, проблема только в XP. Vista и Windows 7 работают правильно. Я все еще хотел бы найти обходной путь, чтобы всплывающая подсказка отображалась над формой в XP.
Вот минимальная программа для демонстрации проблемы:
using System;
using System.Windows.Forms;
public class Form1 : Form
{
private ToolTip toolTip1;
private Label label1;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
public Form1()
{
toolTip1 = new ToolTip();
label1 = new Label();
label1.Location = new System.Drawing.Point(105, 127);
label1.Text = "Hover over me";
label1.AutoSize = true;
toolTip1.SetToolTip(label1, "This is a moderately long string, "
+ "designed to be very long so that it will also be quite long.");
ClientSize = new System.Drawing.Size(292, 268);
Controls.Add(label1);
Opacity = 0.8;
}
}