あなたのコードにはいくつかの問題があります。まず、screenCursor.Position
に対するカーソルの位置を返しますが、ラベルの位置はformに対して相対的に測定されます。これにより、実際にクリックした場所の左と下のどこかに (ほとんどの場合) ラベルが配置されます。Grooが指摘しているように、画面座標からクライアント (フォーム) 座標に変換できますが、この場合は必要ありません。PointToClient
MouseEventArgs
2 番目の問題は、Visible
プロパティを に設定したにもかかわらずtrue
(デフォルトで に設定されているため、実際には必要ありませんtrue
)、表示するテキストを実際に指定していないことです。ラベルが追加されますが、表示されません。
イベントで指定された場所 ( ) を使用しe.Location
、ラベルにテキスト ( lbl.Text
) を付けて、実際に表示できるようにします。
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
Label lbl = new Label();
lbl.Location = e.Location;
lbl.Text = "Hello World";
this.Controls.Add(lbl);
}
最後に、イベントをフォームに正しくバインドしていない場合は、必ずバインドしてください。
public Form1()
{
InitializeComponent();
this.MouseClick += Form1_MouseClick;
}