C# 如何计算PropertyGrid控件的高度?

C# 如何计算PropertyGrid控件的高度?,c#,winforms,C#,Winforms,动态创建PropertyGrid并设置其SelectedObject属性后 我想设置它的Height属性,以便适当地调整窗体的大小 更新:根据某些条件,每次选择的对象可能不同,这意味着属性的数量可能不同,高度也可能不同: var pgd = new PropertyGrid { SelectedObject = someObject }; 我试图将高度计算为其属性tabs的总和 pgd.Height = pgd.Propert

动态创建PropertyGrid并设置其SelectedObject属性后 我想设置它的Height属性,以便适当地调整窗体的大小

更新:根据某些条件,每次选择的对象可能不同,这意味着属性的数量可能不同,高度也可能不同:

var pgd = new PropertyGrid
          {
              SelectedObject = someObject
          };
我试图将高度计算为其属性tabs的总和

pgd.Height = pgd.PropertyTabs.OfType<PropertyTab>().Sum(p => p.Height);
pgd.Height=pgd.PropertyTabs.OfType().Sum(p=>p.Height);
但是“PropertyTab”不包含高度的定义。

您可以使用此选项

var hgt = pgd.Size.Height;

如果更改SelectedObject属性,PropertyGrid控件不会调整大小

如果高度不够,它将自动添加滚动条:


如果需要调整PropertyGrid的大小,则需要将其放入另一个容器中,并将Dock属性设置为fill。

PropertyGrid
不支持自动调整大小。所以,通过指定一个新的选定对象,控件的大小不会改变,而是保持原样。因此,您可以使用
propertyGrid1获得高度。高度
@RezaAghaei实际上,在本例中,SelectedObject可以根据某些条件分配给不同的对象,具有不同数量的属性-因此它的大小每次都会有所不同,因此我想为PropertyGrid DynamicalyHeight设置高度始终保持不变,除非你改变它。正如第一条评论中已经提到的,
PropertyGrid
不支持自动调整大小。只需为控件设置一个合适的
Dock
Anchor
,如果需要,它将自动显示滚动条。这很遗憾,看起来DataGridView有一个优势,因为它支持自动调整大小,但不太适合显示对象的属性,将需要更多的编码
PropertyGrid
具有更好的属性编辑用户体验。它支持对属性进行分类、显示图标、描述和使用合适的编辑器进行编辑。自动调整大小的
PropertyGrid
没有多大用处,因为如果属性数量太多,则需要将其放入可滚动的容器中,而控件本身支持此功能,并在需要时显示滚动条。