自定义控件ClientRectangle

时间:2011-02-16 14:30:54

标签: c# winforms user-controls

我正在创建一个UserControl,它将成为GUI中其他控件的基类。

原因是我可以在控件周围绘制自定义边框。

Control具有ClientRectangle属性,该属性表示控件的客户端区域。 UserControl将此设置设置为与控件的Bounds相同的大小。

因为我在控件周围绘制了自定义边框,我想修改ClientRectangle,但我似乎无法找到一种方法来执行此操作。

以前有人这样做过吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

确定,

经过一番搜索,我找到了这个页面:

http://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet-drawing/769/How-do-you-increase-the-nonclient-area-to-support-a-border

这对我有很大帮助。

但是,我必须将switch语句中的检查更改为:

....
switch (m.Msg)
{
    case WM_NCCALCSIZE:
        if (m.WParam != IntPtr.Zero)
        {
            NCCALCSIZE_PARAMS csp;

....

基本上,有许多摆弄Windows消息和绘制非客户区域。它并不完美,也不会妨碍设计师对边框进行控制。