我正在尝试制作一个可以容纳可变数量的字符串并通过以编程方式更改此控件的高度来动态调整其高度的控件。
到目前为止,我已经尝试了 Checked Listbox 和 ListView。
列表框一直显示水平滚动条,即使它已设置为 false。ListView 看起来更有希望,但它拒绝重新排列框中的项目:
public partial class Form1 : Form
{
string[] content =
{
"Lorem",
"ipsum",
"dolor",
"sit",
"amet",
"consectetur",
"adipiscing",
"elit" ,
"Integer" ,
"commodo" ,
};
ListView listView1 = new ListView();
public Form1()
{
InitializeComponent();
listView1.Size = new System.Drawing.Size(300, 22);
listView1.Font = new Font(FontFamily.GenericMonospace, 10);
listView1.CheckBoxes = true;
listView1.View = View.List;
listView1.Scrollable = false;
this.Controls.Add(listView1);
groupBox1.Controls.Add(listView1);
foreach (string str in content)
{
listView1.Items.Add(str.PadRight(12));
}
}
private void Form1_Load(object sender, EventArgs e)
{
listView1.Height = 100;
}
}
如果我将其listView1.Height = 100;
移至类的构造函数,它将起作用,很明显这就是问题所在。我似乎找不到这个问题的根本原因是什么......我应该调用列表框的一些成员函数来重新放置它的项目吗?
更新 在摆弄了更多之后,似乎也可以通过使用设计器将项目添加到列表中来重现该行为,设置所有锚点,捕捉到表单的边缘并在运行时调整表单的大小。然后,再次,项目将不会重新对齐。尽管如此,仍然坚持如何强制重新定位列表视图中的项目。