私はこの質問を見ましたが、それは役に立ちますが、WndProcは起動しません
これは、ピクチャ ボックスを備えたユーザー コントロールです。mouseClick イベント中にヒット テストを実行して、ボードのどの部分がクリックされたかを判断し、ピースを相対的な領域に置きます。次に、ゲーム ピースの 1 つを作成し、ホスト フォームの端からボード上の適切な場所までアニメーション化します。ゲームピースはゲームボードの子ではない
それはすべてうまくいっています。ただし、ユーザーがゲーム ピースをクリックしても、その下のボードの 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);
}
}
}