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

标签 c#

我正在使用 C#、Visual Studio Express 2013 进行工作。 我有 CheckListBox,根据底层数据,我可以在其中包含不同数量的项目。我正在尝试根据项目数量调整 CheckListBox 的高度。 目前,填充项目列表后,我调用以下方法来设置 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;
}

关于c# - 设置复选框的高度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27730670/

相关文章:

c# - 关于 ToolStripMenuItem

c# - Unity iOS - 无法从 .Bundle 导入函数

c# - mongodb C# 驱动程序更新多个字段

c# - 在派生自(相同)接口(interface)的两种类型之间进行转换

C# 类型或命名空间预期混淆

c# - Telegram Bot Api 库 (.Net) 中标题的换行符

c# - 在 .net 中使用 JsonConvert 对具有可变长度的对象进行 JSON 序列化

c# - 调试 Visual Studio IDE 中不会发生的 .NET 崩溃

c# - C# 2.0-3.0 是否支持方法的命名参数?

C# - 如何在 Entity Framework Core 3.1 的模型中动态设置 builder.Property().HasComment