1

我整个早上都在为此头疼。

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

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

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

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

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

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 的原因...

请帮我。

4

1 回答 1

0

您描述的行为很可能发生,因为IntegralHeight设置为 true(MSDN 文章)。如果您希望ListBox得到的高度与您输入的值完全相同,只需禁用此选项:

this.lbResults.IntegralHeight = false;

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

于 2013-10-09T12:19:36.490 回答