C# 设置复选框的高度不起作用

C# 设置复选框的高度不起作用,c#,C#,我在Visual Studio Express 2013的C#工作。 我有一个复选框,根据基础数据,我可以在其中包含不同数量的项。我试图根据项目的数量调整复选框的高度。 当前,一旦填充了项目列表,我将调用以下方法来设置复选框的高度: private void SetPanelSize() { int top=TBT说明。高度+2; int选项高度=0; 对于(int i=0;i

我在Visual Studio Express 2013的C#工作。 我有一个复选框,根据基础数据,我可以在其中包含不同数量的项。我试图根据项目的数量调整复选框的高度。 当前,一旦填充了项目列表,我将调用以下方法来设置复选框的高度:

private void SetPanelSize()
{
int top=TBT说明。高度+2;
int选项高度=0;
对于(int i=0;i
当我运行此操作时,复选框的高度设置为比项目数少一个项目-即,如果有三个项目,则只有两个项目可见,需要向下滚动才能看到第三个项目。 调试后,每个选项的高度返回为16。对于三个项目,此选项的高度为48。但是,当指定cbOptions时,“高度”设置为36

我在前面计算高度的方法中看到了这一点——当我将其指定给高度时,我计算的值会改变。 发生了什么事?我错过什么了吗?在我看过的文献中(主要是MSDN),我找不到关于高度分配调整的参考资料


非常感谢您的帮助。

复选框本身需要一定的高度。因此,您需要将选项高度添加到复选框的高度。请尝试以下代码,它将正常工作:

cbOptions.Height += optionsHeight;

确保IntegralHeight属性设置为false,并且还必须补偿边框大小:

cbOptions.IntegralHeight = false;
int optionsHeight = 0;
if (cbOptions.BorderStyle == BorderStyle.Fixed3D) {
  optionsHeight = SystemInformation.Border3DSize.Height * 2;
} else if (cbOptions.BorderStyle == BorderStyle.FixedSingle) {
  optionsHeight = SystemInformation.BorderSize.Height * 2;
}