我整个上午都在打扰我。
我使用文本框和列表框创建了一个用户控件。列表框应显示包含在文本框中输入的文本的所有项目。
它应该是具有类似搜索功能的组合框。
所有搜索工作只有列表框的大小调整在某一点失败,我无法弄清楚问题是什么。
以下代码完美执行。但是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 ...
请帮帮我。
答案 0 :(得分:0)
您描述的行为最有可能发生,因为IntegralHeight
设置为true(MSDN article)。如果您希望ListBox
获取的高度与您输入的值完全相同,则只需禁用此选项:
this.lbResults.IntegralHeight = false;
另一方面,请记住,这不是一个不好的功能。启用此选项后,C#将您输入的高度值作为建议并使其适应目标:ListBox的最终高度必须能够被每个项目的高度整除(实际高度,即ItemHeight +项目间滞后。)