public Form1()
{
InitializeComponent();
this.imgRoom.Click += new EventHandler(this.pictureBox1_Click);
}
private void pictureBox1_Click(object sender, EventArgs e)
{
var label1 = new LabelControl();
label1.Location = MousePosition;
label1.BackColor = Color.Red;
label1.Parent = imgRoom;
label1.Text = "Point";
imgRoom.Controls.Add(label1);
}
当我点击你可以在附加屏幕上看到的位置时,点出现在另一个地方。如何解决这个问题呢?
答案 0 :(得分:5)
MousePosition
位于屏幕坐标中。您需要将其转换为客户端坐标。
private void pictureBox1_Click(object sender, EventArgs e)
{
var label1 = new LabelControl();
label1.Location = imgRoom.PointToClient(MousePosition); // changed here.
label1.BackColor = Color.Red;
label1.Parent = imgRoom;
label1.Text = "Point";
imgRoom.Controls.Add(label1);
}
答案 1 :(得分:1)
看起来你必须相对于表格而不是图片框的鼠标位置。尝试使用pictureBox' mouseClick'事件然后使用mouseEventArgs' e.Location'用于设置标签位置属性的属性。
见 - (https://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseclick(v=vs.110).aspx)