列表框高度被其他值替换?

时间:2013-10-09 11:52:37

标签: c# listbox size

我整个上午都在打扰我。

我使用文本框和列表框创建了一个用户控件。列表框应显示包含在文本框中输入的文本的所有项目。

它应该是具有类似搜索功能的组合框。

所有搜索工作只有列表框的大小调整在某一点失败,我无法弄清楚问题是什么。

以下代码完美执行。但是lbresult失效后lbresults的高度在viewableRows = 1时设置为4

在代码下面是控制台语句生成的输出

if (this.lbResults.Visible)
{
            int viewableRows = this.lbResults.Items.Count;
            Console.WriteLine(viewableRows.ToString());
            if (viewableRows > this.maxItemsDisplayed)
            {
                viewableRows = this.maxItemsDisplayed;
            }
            Console.WriteLine(viewableRows.ToString());

            int lbresults_height = ((viewableRows) * 15) ;

            Console.WriteLine(lbresults_height);

            this.ResizeControl(this.Width, this.txtSearch.Height + lbresults_height);
            this.lbResults.Size = new Size(this.lbResults.Width, lbresults_height);
            this.lbResults.Invalidate();
            Console.WriteLine("Listbox Height: " + lbResults.Height.ToString());
        }
        else if(!this.lbResults.Visible)
        {
            this.ResizeControl(this.Width, this.txtSearch.Height);
}

输出:

1
1
15

列表框高度:4

我找不到任何理由将它设置为4 ...

请帮帮我。

1 个答案:

答案 0 :(得分:0)

您描述的行为最有可能发生,因为IntegralHeight设置为true(MSDN article)。如果您希望ListBox获取的高度与您输入的值完全相同,则只需禁用此选项:

this.lbResults.IntegralHeight = false;

另一方面,请记住,这不是一个不好的功能。启用此选项后,C#将您输入的高度值作为建议并使其适应目标:ListBox的最终高度必须能够被每个项目的高度整除(实际高度,即ItemHeight +项目间滞后。)