Код: Выделить всё
OwnerDraw=true
Я уже задал вопрос об этом, думая, что я делаю что-то не так, но теперь я обнаружил, что это работает нормально (для меня) с .net 8, но не с .net Framework . Я протестировал .NET Framework 4.8 (это то, что я должен использовать), 4.7.2 и 4.6.2 - всплывающее событие не запускается ни с одним из них. Событие поднимается всякий раз, когда отображается подсказка, либо с помощью явного призывания к одному из методов шоу, либо когда класс подсказки инструментов неявно отображает подсказку. Код, но в своем ответе на мой предыдущий вопрос @olivier jacot-descombes включил следующий код, который очень похож на то, как я это делаю, и это также код, который я использовал для своих тестов с тех пор: < /p>
Код: Выделить всё
public partial class FormTreeNodeToolTip : Form
{
private static readonly Font _font = new Font("Consolas", 16, FontStyle.Regular);
private TreeNode _currentNode;
public FormTreeNodeToolTip()
{
InitializeComponent();
}
private void ToolTip1_Draw(object sender, DrawToolTipEventArgs e)
{
e.Graphics.Clear(Color.LightYellow);
e.Graphics.DrawString(e.ToolTipText, _font, Brushes.Blue, e.Bounds);
}
private void TreeView1_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e)
{
_currentNode = e.Node;
Point cursor = treeView1.PointToClient(Cursor.Position);
toolTip1.Show(e.Node.Text, treeView1, cursor.X + 20, cursor.Y + 20, 800);
}
private void ToolTip1_Popup(object sender, PopupEventArgs e)
{
e.ToolTipSize = TextRenderer.MeasureText(_currentNode.Text, _font);
}
private void TreeView1_MouseMove(object sender, MouseEventArgs e)
{
if (treeView1.GetNodeAt(e.Location) != _currentNode) {
_currentNode = null;
toolTip1.Hide(treeView1);
}
}
private void TreeView1_MouseLeave(object sender, EventArgs e)
{
toolTip1.Hide(treeView1);
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -framework