このコントロールの高さをプログラムで変更することにより、可変量の文字列を保持し、その高さを動的に調整できるコントロールを作成しようとしています。
これまでのところ、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;
と、明らかに問題がどこにあるかが明らかになります。しかし、この問題の根本的な原因が何かを見つけることができないようです...リストボックスのメンバー関数を呼び出して、アイテムを再配置する必要がありますか?
更新 もう少しいじった後、デザイナーを使用してリストにアイテムを追加し、すべてのアンカーを設定し、フォームの端にスナップし、実行時にフォームのサイズを変更することでも、動作を再現できるようです。その後、再び、アイテムは再配置されません。ただし、リストビュー内のアイテムを強制的に再配置する方法にまだこだわっています。