.net 控件在Windows.Forms.Panel中的位置,带有autoscroll
Location不考虑父面板控件的滑块位置,并返回值,就像没有滚动条一样。那么,如何获得可滚动面板中某些控件的真实位置呢? 例如,在这里,我从未获得按钮的真实位置:.net 控件在Windows.Forms.Panel中的位置,带有autoscroll,.net,winforms,.net,Winforms,Location不考虑父面板控件的滑块位置,并返回值,就像没有滚动条一样。那么,如何获得可滚动面板中某些控件的真实位置呢? 例如,在这里,我从未获得按钮的真实位置: Button button; public Form1() { InitializeComponent(); panel1.Height = 200; panel1.AutoScrollMinSize = new Size(0,
Button button;
public Form1()
{
InitializeComponent();
panel1.Height = 200;
panel1.AutoScrollMinSize = new Size(0, 2000);
button = new Button();
panel1.Controls.Add(button);
button.Top = 1500;
button.Click += new EventHandler(button_Click);
}
void button_Click(object sender, EventArgs e)
{
MessageBox.Show(button.Location.Y.ToString());
}
是的。如果我将面板放在滚动面板内,则位置会随着我的滚动而改变:
Private Sub Panel1_Scroll(ByVal sender As Object, ByVal e As ScrollEventArgs) Handles Panel1.Scroll
Me.Text = Panel2.Location.ToString
End Sub
确保您的控件不在另一个正在滚动的面板中,则location属性不会更改
否则,请查看PointToScreen和PointToClient函数,或根据滚动父项的AutoScrollPosition值调整您的值。我已经附加了一些代码示例,很抱歉不清楚。我刚刚意识到AutoSctollPosition将真正解决我的问题,谢谢!