ListBox HorizontalScrollbar не работает с WinForms

#c# #.net #winforms #listbox

#c# #.net #winforms #listbox

Вопрос:

У меня есть ListBox в winforms, приложении C #. мне нужно добавить в ListBox флажки в коде, и мне нужно, чтобы HorizontalScrollbar появлялся, когда флажков много и ListBox не может отобразить их все. Я поместил ListBox в окно и установил для его HorizontalScrollbar значение true. Также я установил максимальную высоту и ширину для ListBox.Но когда я запускаю приложение, я не вижу всех флажков… кто-нибудь может помочь с этим?

это код для добавления флажков :

             listBox1.HorizontalScrollbar = true;
            this.groupBox_ChooseTCPipConfg.Controls.Add(listBox1);
            CheckBox chk1 = new CheckBox();
            chk1.Text = "chk1";
            chk1.Location = new Point(2, 2);
            listBox1.Controls.Add(chk1);
            CheckBox chk2 = new CheckBox();
            chk2.Text = "chk2";
            chk2.Location = new Point(2,22);
            listBox1.Controls.Add(chk2);
            CheckBox chk3 = new CheckBox();
            chk3.Text = "chk3";
            chk3.Location = new Point(2, 42);
            listBox1.Controls.Add(chk3);
            CheckBox chk4 = new CheckBox();
            chk4.Text = "chk4";
            chk4.Location = new Point(2, 62);
            listBox1.Controls.Add(chk4);
            CheckBox chk5 = new CheckBox();
            chk5.Text = "chk5";
            chk5.Location = new Point(2, 82);
            listBox1.Controls.Add(chk5);
            CheckBox chk6 = new CheckBox();
            chk6.Text = "chk6";
            chk6.Location = new Point(2, 102);
            listBox1.Controls.Add(chk1);
            CheckBox chk7 = new CheckBox();
            chk7.Text = "chk7";
            chk7.Location = new Point(2, 122);
            listBox1.Controls.Add(chk7);
            CheckBox chk8 = new CheckBox();
            chk8.Text = "chk8";
            chk8.Location = new Point(2, 142);
            listBox1.Controls.Add(chk8);
            CheckBox chk9 = new CheckBox();
            chk9.Text = "chk9";
            chk9.Location = new Point(2, 162);
            listBox1.Controls.Add(chk9);
            CheckBox chk10 = new CheckBox();
            chk10.Text = "chk10";
            chk10.Location = new Point(2,202);
            listBox1.Controls.Add(chk10);
  

когда я запускаю приложение, я вижу только первые 7 флажков….

Ответ №1:

У вас нет ListBox прокрутки, потому что вы не добавили в нее никаких элементов. Вы просто размещаете CheckBox элементы управления внутри. Прокрутка появляется только в том случае, если у вас будет много элементов.

Для таких целей используйте FlowLayoutPanel элемент управления.

Вот как свойства должны быть установлены для FlowLayoutPanel

введите описание изображения здесь

Ответ №2:

Попробуйте установить ListBox.HorizontalExtent

Не забудьте прочитать комментарии к приведенной выше ссылке на msdn.