如何找到一个控制的可见部分? [英] How do I find the visible part of a control?
本文介绍了如何找到一个控制的可见部分?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的父母是 ScrollableControl
控制。如何找到控制这实际上对用户可见的部分?两者都是长方形的 - 有没有有趣的业务地区
I have a control whose parent is a ScrollableControl
. How do I find the part of the control that's actually visible to the user? Both are rectangular - there's no funny business with Regions.
推荐答案
我觉得GetVisibleRectangle方法,我写了下面就是你请求。这与滚动连续运行产生了以下的输出作为控制已滚动:
I think the GetVisibleRectangle method I wrote below is what you were requesting. Successive runs of this with scrolling yielded the following output as the control was scrolled:
- {X = 0,Y = 0,宽度= 0,高度= 0} - 将Button4被滚出视。请注意,这里的值是
Rectangle.Empty
。 - {X = 211,Y = 36,宽度= 25,高度= 13} - 将Button4已滚动这样的左上角是可见
- {X = 161,Y = 36,宽度= 75,身高= 13} - 将Button4已滚动所以上半部分和整个宽度是可见
- {X = 161,Y = 26,宽度= 75,身高= 23} - 将Button4已滚动是完全可见
- {X=0,Y=0,Width=0,Height=0} - button4 was scrolled out of view. Note that the value here is
Rectangle.Empty
. - {X=211,Y=36,Width=25,Height=13} - button4 was scrolled so the upper left corner was visible
- {X=161,Y=36,Width=75,Height=13} - button4 was scrolled so the top half and entire width was visible
- {X=161,Y=26,Width=75,Height=23} - button4 was scrolled to be entirely visible
请注意如何,除了宽度和高度改变的X,Y也改变了与滚动。
Note how in addition to the Width and Height changes that the X,Y also changed with scrolling.
来源:
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;
}
这篇关于如何找到一个控制的可见部分?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文