4

グリッドを表すパネルで覆われているウィンドウフォームに取り組んでいます。

どのパネルでクリックが発生したかに関係なく、すべてのマウスクリックを処理しPictureBox、パネルの場所に移動するイベントハンドラーを作成しようとしています。

イベントハンドラーをカバーするトピックを見つけることができましたが、イベントハンドラーからマウスクリックの場所を取得できません。以下は私がこれまでに持っているコードです(主に別の投稿からピンチされています):

private void Form1_Load(object sender, EventArgs e)
{
    foreach (Control c in this.Controls)
    {
        c.MouseClick += new MouseEventHandler(myEvent_handler_click);
    }
}

public void myEvent_handler_click(object sender, EventArgs e)
{
    Point point = new Point(e.X, e.Y);

    game.MoveToSquare(point);
}

ofまたはofPoint point = new Point(e.X, e.Y);を参照できないため、コード行が機能しません。XeYe

クリックしたときのマウスの位置を取得するにはどうすればよいですか?

どんな助けでも大歓迎です。よくわからない場合は、遠慮なく質問してください。

4

1 に答える 1

1

イベントハンドラのデリゲートは次のように定義されます。

public delegate void MouseEventHandler(object sender, MouseEventArgs e);

MouseEventArgsから継承しEventArgsます。これが、コードが機能している理由です。の定義を変更するとEventHandler、座標にアクセスできるようになります。

public void myEvent_handler_click(object sender, MouseEventArgs e)
{
    Point point = new Point(e.X, e.Y);
}

e.Locationポイントを取得するために簡単にアクセスすることもできます。

Point point = e.Location;
于 2013-03-27T10:15:16.363 に答える