以下是代码:
Dim nBtn As New Button
PictureBox1.Controls.Add(nBtn)
nBtn.Text = "Click Me"
nBtn.Location = Cursor.Position ' or mouseposition = same result
它的样子......距离我最初点击它的位置大约2英寸。我的代码甚至没有抵消它的位置,所以这是怎么回事?
这是SplitContainer
右侧内的图片框。
答案 0 :(得分:1)
Control.Location
指的是相对于控件容器的位置(或者更确切地说,是它的左上角)。
Cursor.Position
(和Control.MousePosition
)指的是相对于屏幕左上角的位置。
因此,如果您的控件的容器恰好位于屏幕的左上角,那么您的代码将起作用。否则,它会像你看到的那样被抵消。您应该看到Control.PointToScreen
和Control.PointToClient
方法是否对您有所帮助;文档对我来说并不完全清楚,但它们可能正是您所需要的。例如:
nBtn.Location = PictureBox1.PointToClient(Cursor.Position)