2014-01-15 39 views
0

這裏的按鈕是代碼:爲什麼在偏差位置

Dim nBtn As New Button 
    PictureBox1.Controls.Add(nBtn) 
    nBtn.Text = "Click Me" 
    nBtn.Location = Cursor.Position ' or mouseposition = same result 

enter image description here

這就是它的外觀..其約2英寸遠離那些我本來點擊它。我的代碼甚至沒有抵消它的位置,所以這是怎麼發生的?
這是SplitContainer右側的圖片框。

+0

您可以創建一個簡短的*完整*程序來演示問題嗎? –

回答

1

Control.Location是指相對於對照的容器(或更確切地說,它的左上點)的位置

Cursor.Position(和Control.MousePosition)指的是相對於屏幕的左上角的位置

因此,如果您的控件的容器恰好位於屏幕的左上角,那麼您的代碼將起作用。否則,它會像你看到的那樣被抵消。您應該看看Control.PointToScreenControl.PointToClient方法是否可以幫助您;該文檔並不完全清楚,但他們可能正是你所需要的。例如:

nBtn.Location = PictureBox1.PointToClient(Cursor.Position)