5

ピクチャーボックスコントロールがあり、クリックすると別のピクチャーボックスが特定の場所に表示されます。ツールボックスから追加されたわけではありません。

PictureBox picOneFaceUpA = new PictureBox();
        picOneFaceUpA.Location = new Point(42, 202);
        picOneFaceUpA.Width = 90;
        picOneFaceUpA.Height = 120;
        picOneFaceUpA.Image = Image.FromFile("../../Resources/" + picFaceUpToBeMoved[0] + ".png");
        Controls.Add(picOneFaceUpA);
        picOneFaceUpA.BringToFront();

このコントロールにMouseClickイベントハンドラーを追加するにはどうすればよいですか?

ありがとう

4

4 に答える 4

10

+=演算子を使用してイベントハンドラーを追加するだけです。

picOneFaceUpA.MouseClick += new MouseEventHandler(your_event_handler);

または:

picOneFaceUpA.MouseClick += new MouseEventHandler((o, a) => code here);
于 2012-11-19T14:09:21.010 に答える
1

WinFormsでイベントをサブスクライブするための最良の方法-デザイナでコントロールを選択し、[プロパティ]ウィンドウに移動して[イベント]タブを選択します。次に、必要なイベント(Click、MouseClickなど)を選択し、イベント名の右側のスペースをダブルクリックします。イベントハンドラーが生成され、イベントにサブスクライブされます。


イベントを手動でサブスクライブする場合は、イベントハンドラーをイベントに追加します

picOneFaceUpA.MouseClick += PicOneFaceUpA_MouseClick;

Tab書き込んだ後にヒット+=すると、ハンドラーが生成されます。または、手動で書き込むこともできます。

void PicOneFaceUpA_MouseClick(object sender, MouseEventArgs e)
{
   // handle click event
   if (e.Button == MouseButtons.Left)
       MessageBox.Show("Left button clicked");
}

ところで、クリックイベントに関する追加情報(たとえば、どのボタンがクリックされたか)が必要ない場合は、Click代わりにイベントを使用してください。デフォルトでは、左ボタンのクリックを処理します。

picOneFaceUpA.Click += PicOneFaceUpA_Click;

そしてハンドラー:

void PicOneFaceUpA_Click(object sender, EventArgs e)
{
   // show another picture box
}
于 2012-11-19T14:09:06.143 に答える
1

入力picOneFaceUpA.Click +=してTabキーを押すと、オートコンプリートが実行され、イベントハンドラーが実装されます。

    private void button2_Click(object sender, EventArgs e)
    {
        PictureBox picOneFaceUpA= new PictureBox();
        picOneFaceUpA.Click += new EventHandler(picOneFaceUpA_Click);
    }

    void picOneFaceUpA_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }
于 2012-11-19T14:10:21.537 に答える
1

動的コントロールを追加する方法を知っているようです。

this.picOneFaceUpA.MouseClick += new MouseEventHandler(yourMethodName); //hook

とイベントを削除するには

this.picOneFaceUpA.MouseClick -= yourMethodName;     //unhook

メソッドは次のように宣言する必要があります。

private void yourMethodName(object sender, MouseEventArgs e)
{
    //your code here
}
于 2012-11-19T14:10:48.307 に答える