C # ToolTip Проблема - PullRequest
       10

C # ToolTip Проблема

0 голосов
/ 01 марта 2010

У меня есть следующий код, который делает ролловер изображения на картинках, расположенных внутри таблицы. в каждой ячейке таблицы есть поле для картинок.

проблема в том, что даже когда в коде указано, что над картинкой не должно быть никаких подсказок, каким-то образом появляются некоторые подсказки. я не могу найти его в коде, так как в коде нет подсказок!

Я пробовал несколько подходов, но все они, кажется, сжимаются, когда используются всплывающие подсказки. Есть ли известная ошибка в элементе управления ToolTip?

    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 Ответ

2 голосов
/ 01 марта 2010

Вам не хватает вызова, чтобы явно удалить старые значения из всплывающей подсказки? Исходя из кода, я предполагаю, что он, вероятно, будет принадлежать обработчику событий MouseLeave.

gameFormToolTip.SetToolTip(HomeCurrentPicBox, ""); 
...