Привет, я разрабатываю игру-клон линкоров, и у меня проблема с событием TableLayoutPanel MouseLeave.
первый MouseMove:
private PictureBox HomeLastPicBox = new PictureBox();
private TableLayoutPanelCellPosition homeLastPosition = new TableLayoutPanelCellPosition(0, 0);
private void HomeTableLayoutPanel_MouseMove(object sender, MouseEventArgs e)
{
PictureBox NowPicControl = (PictureBox)(HomeTableLayoutPanel.GetChildAtPoint(e.Location));
if ((NowPicControl != null) && (NowPicControl != HomeLastPicBox))
{
HomeLastPicBox = (PictureBox)(HomeTableLayoutPanel.GetControlFromPosition(homeLastPosition.Column, homeLastPosition.Row));
if (GameModel.HomeCellStatus(homeLastPosition.Column, homeLastPosition.Row) == Cell.cellState.WATER)
{
HomeLastPicBox.Image = Properties.Resources.water;
}
TableLayoutPanelCellPosition homeCurrentPosition = HomeTableLayoutPanel.GetCellPosition(NowPicControl);
if (GameModel.HomeCellStatus(homeCurrentPosition.Column, homeCurrentPosition.Row) == Cell.cellState.WATER)
{
NowPicControl.Image = Properties.Resources.scan;
}
homeLastPosition = homeCurrentPosition;
}
}
это, кажется, работает правильно.
теперь событие MouseLeave:
private void HomeTableLayoutPanel_MouseLeave(object sender, EventArgs e)
{
MessageBox.Show("col " + homeLastPosition.Column.ToString() + " row " + homeLastPosition.Row.ToString());
if (GameModel.HomeCellStatus(homeLastPosition.Column, homeLastPosition.Row) == Cell.cellState.WATER)
{
HomeLastPicBox.Image = Properties.Resources.water;
MessageBox.Show("hi");
}
HomeLastPicBox = new PictureBox();
}
это ведет себя странно. он проходит код, и даже отображается «HI», но изображение PictureBox не меняется на воду. есть идеи почему? это происходит не постоянно, только время от времени.
то, что делает приведенный выше код, в основном сканирует ячейки таблицы, и если содержимое ячейки - ВОДА, то он обновляет изображение ячейки таблицы до СКАНИРОВАНИЯ, и по мере продвижения пользователя он переключает изображение ячейки обратно на ВОДА.
надеюсь, что этой информации достаточно. пожалуйста, спросите, нужно ли больше.
заранее спасибо.
p.s. это попытка javascript, такого как mouseover и mouseexit.
я добился некоторого прогресса. получается, что после MouseLeave снова вызывается MouseMove, поэтому результат я испытываю.
просто нужно логически это по-другому, я думаю.