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

本文关键字:不起作用 高度 复选框 设置 | 更新日期: 2023-09-27 18:35:53

我正在使用C#,Visual Studio Express 2013。我有CheckListBox,根据基础数据,我可以在其中拥有不同数量的项目。我正在尝试根据项目数调整清单框的高度。目前,一旦填充了项目列表,我调用以下方法来设置清单框的高度:

        private void SetPanelSize()
        {
            int top = tbInstructions.Height + 2;
            int optionsHeight = 0;
            for (int i = 0; i < cbOptions.Items.Count; i++)
            {
                optionsHeight += cbOptions.GetItemHeight(i);
            }
            cbOptions.Location = new Point(4, top);
            cbOptions.Height = optionsHeight;
        }

当我运行它时,CheckListBox 高度设置为相当于项目数少一个项目 - 即,如果有三个项目,则只有两个可见,需要向下滚动才能看到第三个。调试后,每个选项高度返回为 16。在三个项目的情况下,这给出了选项高度 48。 但是,当分配 cbOptions.Height 设置为 36 时。

我在以前计算高度的方式中看到了这一点 - 当我将其分配给高度时,我计算的值会发生变化。这是怎么回事?我错过了什么吗? 我在我看过的文献(主要是 MSDN)中找不到对高度分配调整的参考。

任何帮助非常感谢。

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

确保将

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;
}

CheckListBox本身需要一定的高度。所以你需要添加选项高度到CheckListBox的高度。尝试以下代码,它将起作用:

cbOptions.Height += optionsHeight;