C#でWindowsフォームを使用していますが、次の機能を実行したいと考えています。
ユーザーがフォームをクリックすると、その場所に「何か」が描画されますユーザーがクリックしたユーザーのクリックに基づく動的オブジェクト描画
私には2つの質問があります:
1)これを行うためのベストプラクティス/推奨方法はありますか?今はマウスをクリックしてカーソルの位置を取得し、その位置にオブジェクトを描画すると起動するWindows EventHandlerを使用しています。
2) "Cursor.Position"の位置にオブジェクトを描画すると、実際のカーソルの位置よりもはるかに大きく描画されます。 (それは、それを左下に描画します。)Cursor.Positionで行う必要のある変換がありますか?画面の座標を取得するには?
以下に、簡単なサンプルコードを示しました。 "Click" EventHandlerでフォームを登録することがわかります。次に、EventHandlerが起動すると、フォームにラベルを単に描画する関数を呼び出します。
ご協力いただきありがとうございます。
MyForm myForm = new myForm();
myForm.Click += new System.EventHandler(this.MyForm_Click);
_
private void MyForm_Click(object sender, EventArgs e)
{
Point p = Cursor.Position; // Does this get the correct position?
DrawObject(p);
}
private void DrawObject(Point p)
{
Label l = new Label()
l.Size = new System.Drawing.Size(300, 300);
l.Text = "New Label";
l.Location = p;
this.Controls.Add(l);
}
ありがとうございました。 「クリック」と「マウスクリック」の違いは何ですか? – Eric
@Eric:MouseClickは、どのボタンがクリックされたかなどの情報を含むMouseEventArgsと、適切な座標の場所を表示します。 –