Control.Location 不考虑父面板控件的滑块位置,并返回值,就像没有滚动条一样。那么如何获取可滚动面板内某个控件的真实位置呢?
例如,在这里我永远无法获得按钮的真实位置:
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
确保您的控件没有位于正在滚动的另一个面板中,这样位置属性就不会更改。
否则,请查看 PointToScreen 和 PointToClient 函数或根据滚动父项的 AutoScrollPosition 值调整您的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)