C# 工具提示问题

Posted

技术标签:

【中文标题】C# 工具提示问题【英文标题】:C# ToolTip Problem 【发布时间】:2010-03-01 18:33:51 【问题描述】:

我有以下代码在位于表格内的图片框上执行图像翻转。每个表格单元格中都有一个图片框。

问题是即使在代码中声明不应显示图片框上的工具提示,但会以某种方式显示一些工具提示。我在代码中找不到它,因为代码没有指定工具提示!

我尝试了几种方法,但在使用工具提示时它们似乎都崩溃了。工具提示控件中是否存在已知错误?

    private bool deployingShip = false;

    private void PictureBox_MouseEnter(object sender, EventArgs e)
    
        PictureBox HomeCurrentPicBox = ((PictureBox)(sender));
        TableLayoutPanelCellPosition HomeCurrentPosition = HomeTableLayoutPanel.GetCellPosition(HomeCurrentPicBox);

        RefreshHomeGrid();

        if (deployingShip == false)
        
            if (GameModel.HomeCellStatus(HomeCurrentPosition.Column, HomeCurrentPosition.Row) == Cell.cellState.Water)
            
                HomeTableLayoutPanel.Cursor = Cursors.Hand;
                HomeCurrentPicBox.Image = Properties.Resources.Scan;
                HomeCurrentPicBox.Refresh();
            
            else
            
                HomeTableLayoutPanel.Cursor = Cursors.No;
                HomeTableLayoutPanel.Refresh();
            
            gameFormToolTip.SetToolTip(HomeCurrentPicBox, GameModel.alphaCoords(HomeCurrentPosition.Column) + "," + HomeCurrentPosition.Row);
         

        if (deployingShip == true)
        
            Cell.cellState state = GameModel.HomeCellStatus(HomeCurrentPosition.Column, HomeCurrentPosition.Row);
            switch (state)
            
                case Cell.cellState.Origin:
                    HomeTableLayoutPanel.Cursor = Cursors.Hand;
                    gameFormToolTip.SetToolTip(HomeCurrentPicBox, currentShip.ToString() + ": " + Cell.cellState.Origin);
                    break;

                case Cell.cellState.EndPoint:
                    HomeTableLayoutPanel.Cursor = Cursors.Hand;
                    gameFormToolTip.SetToolTip(HomeCurrentPicBox, currentShip.ToString() + ": " + Cell.cellState.EndPoint);
                    break;
                default:
                    HomeTableLayoutPanel.Cursor = Cursors.No;
                    HomeTableLayoutPanel.Refresh();
                    return;
            
        
    

    private void PictureBox_MouseLeave(object sender, EventArgs e)
    
        PictureBox HomeCurrentPicBox = ((PictureBox)(sender));
        TableLayoutPanelCellPosition HomeCurrentPosition = HomeTableLayoutPanel.GetCellPosition(HomeCurrentPicBox);

        if (GameModel.HomeCellStatus(HomeCurrentPosition.Column, HomeCurrentPosition.Row) == Cell.cellState.Water)
        
            HomeCurrentPicBox.Image = Properties.Resources.Water;
            HomeCurrentPicBox.Refresh();
        
    

谢谢你,我担心你无法从这个提交的代码中找到错误:(

【问题讨论】:

【参考方案1】:

您是否错过了从工具提示中显式删除旧值的调用?根据代码,我猜它可能属于 MouseLeave 事件处理程序。

gameFormToolTip.SetToolTip(HomeCurrentPicBox, ""); 

【讨论】:

目前已测试!感谢您使 SetToolTip 行为变得清晰!就是这样。非常感谢。 ToolTip 没有明确的命令一直困扰着我。另外,“”不应该是String.Empty吗? 是的,我使用了 string.empty 但 John L. 提供了一个可靠的解决方案。

以上是关于C# 工具提示问题的主要内容,如果未能解决你的问题,请参考以下文章

当前控件的工具提示中的 WPF C# 状态栏标签内容

在 C# 中向 cmd 提示符发送命令

图片上的工具提示

从系统托盘中的图标获取工具提示文本

winform c#删除图片提示文件被占用

halcon在vs2010 C#中 从工具箱拖动HWindowControl控件出现以下错误啥原因,怎么解决