Control.ClientRectangle与Control.DisplayRectangle

spa*_*man 13 .net c# winforms

我理解客户矩形的关于窗体/控件的概念,
但我不明白有什么区别之间
Control.ClientRectangle和Control.DisplayRectangle..

在读取这两个属性的MSDN页面之后,不清楚其中一个属性是否会从另一个属性返回不同的值.

MSDN页面上.ClientRectangle写着:

控件的客户区域是控件的边界,减去非客户端元素,例如:标题栏,边框,滚动条和菜单.

这很清楚.

然而,MSDN页面上.DisplayRectangle写着:

对于基本控件类,这等于客户端矩形.
但是,如果客户端区域与其显示区域不同,则继承控件可能需要更改此设置.

现在还不是那么清楚..在继承控制中,我想让.DisplayRectangle价值与那个不同.ClientRectangle?

Control.ClientRectangle:https :
//msdn.microsoft.com/en-us/library/system.windows.forms.control.clientrectangle.aspx

Control.DisplayRectangle:https :
//msdn.microsoft.com/en-us/library/system.windows.forms.control.displayrectangle.aspx

Lar*_*ech 27

DisplayRectangle是控件的内部画布,因此当您有一个滚动控件时,DisplayRectangle将大于ClientRectangle,它只是您在屏幕上看到的区域:

panel1.AutoScrollMinSize = new Size(0, panel1.Height * 2);
panel1.Paint += panel1_Paint;

void panel1_Paint(object sender, PaintEventArgs e) {
  e.Graphics.FillEllipse(Brushes.Red, panel1.DisplayRectangle);
  e.Graphics.DrawEllipse(Pens.Green, panel1.ClientRectangle);
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 非常感谢Lars.代码片段和结果截图非常有用. (3认同)