我有一个从System.Windows.Forms.UserControl派生的控件,它放在一个自定义的网格中。当网格的第一列被冻结并且网格滚动几个像素时,第二列变得部分可见,使得该列中的控件也变得部分可见。
为了实现这一点,我希望能够通过隐藏/剪切控件的左侧部分来仅显示可见的控件部分。
我不想修改控件的OnPaint,因为我无法访问控件的代码。我可以更改显示控件的网格中的代码。
我尝试了以下哪些不起作用: 1.仅使必须可见的控件的一部分无效。 2.使用GraphicsPath如下:
System.Drawing.Drawing2D.GraphicsPath controlPath = new System.Drawing.Drawing2D.GraphicsPath();
controlPath.AddRectangle(visibleRect);
editControl.Region = new Region(controlPath);
还有其他想法吗?
答案 0 :(得分:0)
我得到了这个有效的解决方案:
使用 GraphicsPath 工作。我没有正确设置剪辑矩形,因为我无法看到剪辑发生。不是将剪辑区域的xOffset设置为网格,而是必须将剪辑区域wrt设置为控件。 窗口区域是操作系统允许绘制的窗口内的像素集合。操作系统不显示位于窗口区域之外的窗口的任何部分。控件区域的坐标是相对于控件的左上角,而不是控件的客户区域(http://msdn.microsoft.com/en-us/library/ddhy6052(vs.71).aspx)