我有一个父母是a的控件ScrollableControl.如何找到实际对用户可见的控件部分?两者都是矩形的 - 区域没有有趣的业务.
dev*_*zer 10
我认为下面写的GetVisibleRectangle方法就是你要求的.滚动控件的连续运行在控件滚动时产生以下输出:
Rectangle.Empty.请注意,除了宽度和高度变化之外,X,Y也会随着滚动而改变.
资源:
private void button1_Click(object sender, EventArgs e)
{
Rectangle r = GetVisibleRectangle(this.panel1, button4);
System.Diagnostics.Trace.WriteLine(r.ToString());
}
public static Rectangle GetVisibleRectangle(ScrollableControl sc, Control child)
{
Rectangle work = child.Bounds;
work.Intersect(sc.ClientRectangle);
return work;
}
Run Code Online (Sandbox Code Playgroud)
AutoScrollPosition 表示可滚动控件的显示矩形的位置。如果控件已滚动远离其起始位置 (0,0),则检索到的 X 和 Y 坐标值为负值。设置此属性时,必须始终指定正的 X 和 Y 值以设置相对于起始位置的滚动位置。例如,如果您有一个水平滚动条,并且将 x 和 y 设置为 200,则滚动条将向右移动 200 个像素;如果您随后将 x 和 y 设置为 100,则滚动看起来会向左跳跃 100 像素,因为您将其设置为距起始位置 100 像素。在第一种情况下,AutoScrollPosition 返回 {-200, 0};在第二种情况下,它返回{-100,0}。
来源:MSDN:ScrollableControl.AutoScrollPosition 属性