Я посмотрел на этот вопрос, и хотя это помогло бы, но WndProc не срабатываетPass через событие мыши для управления под
Pass-through mouse events to parent control
Так у меня есть игровое поле, которое является пользовательским элементом управления с изображением коробка. Во время события mouseClick я делаю хит-тест, чтобы определить, какая часть платы была нажата, и поместите кусок в относительную область. Затем я создаю одну из частей игры и анимирую ее с края формы хоста до нужного места на доске. Таким образом, игровой кусок не является ребенком игрового поля
Это все работает отлично. Однако, если пользователь нажимает на кусок игры, mouseClick для доски под ним не вызывает события. Я вроде как получаю это, как кнопка под кнопкой.
Мой вопрос я могу «пройти через» клик события игрового части таким образом, только доски является «кликабельны»
public enum PieceColor
{
Blue=0,
Yellow,
Red,
Green
}
public class GamePiece : PictureBox
{
PieceColor _color;
public PieceColor Color {
get {
return _color;
}
set
{
_color = value;
if (_color == PieceColor.Blue)
this.Image = global::GameEntities.Properties.Resources.pieceBlue;
}
}
protected override void WndProc(ref Message m)
{
const int WM_NCHITTEST = 0x0084;
const int HTTRANSPARENT = (-1);
if (m.Msg == WM_NCHITTEST) //<-- this never fires
{
m.Result = (IntPtr)HTTRANSPARENT;
}
else
{
base.WndProc(ref m);
}
}
}
Ваш код в порядке, и он отлично работал, когда я его протестировал, передав событие MouseDown в форму. Трудно догадаться, почему у вас такая проблема. –
спасибо, мне придется посмотреть на это сегодня вечером. – Mike