You could use something like the following where you create some functions for your mouse inthe panel, then in your logic code you react to it:
private void panel_MouseLeave(object sender, EventArgs e)
{
trackMouse = false;
}
private void panel_MouseEnter(object sender, EventArgs e)
{
trackMouse = true;
}
if (trackMouse)
{
if (frameCount == 0)
{
if (mouse.X < Engine.TileWidth)
position.X -= Engine.TileWidth;
if (mouse.X > mapDisplay.Width - Engine.TileWidth)
position.X += Engine.TileWidth;
if (mouse.Y < Engine.TileHeight)
position.Y -= Engine.TileHeight;
if (mouse.Y > mapDisplay.Height - Engine.TileHeight)
position.Y += Engine.TileHeight;
camera.Position = position;
camera.LockCamera();
}
position.X = mouse.X + camera.Position.X;
position.Y = mouse.Y + camera.Position.Y;
Point tile = Engine.VectorToCell(position);
shadowPosition = new Vector2(tile.X, tile.Y);
tbMapLocation.Text =
"( " + tile.X.ToString() + ", " + tile.Y.ToString() + " )";
if (isMouseDown)
{
if (rbDraw.Checked)
{
SetTiles(tile, (int)nudCurrentTile.Value, lbTileset.SelectedIndex);
}
if (rbErase.Checked)
{
SetTiles(tile, -1, -1);
}
}
}