我的控件的父级是ScrollableControl
。如何找到实际对用户可见的控件部分?两者都是矩形的 - 区域没有有趣的业务。
答案 0 :(得分: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;
}
答案 1 :(得分:3)
AutoScrollPosition表示可滚动控件的显示矩形的位置。如果控件已从其起始位置(0,0)滚动,则检索到的X和Y坐标值为负。设置此属性时,必须始终指定正X和Y值以设置相对于起始位置的滚动位置。例如,如果您有一个水平滚动条并且将x和y设置为200,则将滚动向右移动200像素;如果然后将x和y设置为100,则滚动似乎向左跳过100个像素,因为您将其设置为距离起始位置100个像素。在第一种情况下,AutoScrollPosition返回{-200,0};在第二种情况下,它返回{-100,0}。
答案 2 :(得分:0)