Как я могу переместить все элементы управления на панели при изменении размера формы? - PullRequest
1 голос
/ 07 августа 2010

Я играю с проектом, C # .NET 4, и я немного застрял. У меня есть панель, которая будет динамически заполняться флажками в зависимости от количества элементов в папке, что прекрасно работает.

Но когда я изменяю размер формы, я хочу, чтобы флажки перемещались на панели, как небольшая сетка флажков, которая занимает свободное место.

До сих пор мне не удавалось найти эффективный способ сделать это. Я до сих пор не понял, как это работает, но я не знаю, что это имеет значение. Методы, которые я пробую, являются убийцами ресурсов.

е.

int boxCount = panel1.Size.Width/123;
int x = 3, y = 3, i = 0;

foreach (Control chkbox in panel1.Controls)
{

      if (i < boxCount)
      {
            chkbox.Location = new Point(x, y);
            x += 123;
      }
      else
      {
            i = 0;
            x = 3;
            y += 123;
            chkbox.Location = new Point(x, y);
      }

      i++;
}

Я ищу что-то, что не удерживает мой ЦП и превращает мою форму в трехстраничную книгу, когда я изменяю ее размер. Для справки я имел в виду что-то вроде селектора обоев рабочего стола Windows в 7, за исключением изменения размера фактических элементов управления.

Я не работал с WPF, но мне, скорее всего, начнут показывать свет, поэтому я искал решение Windows Forms для садового разнообразия.

Ответы [ 2 ]

4 голосов
/ 07 августа 2010

Звучит так, как будто вы ищете FlowLayoutPanel .

1 голос
/ 07 августа 2010

Будет ли TableLayoutPanel или FlowLayoutPanel соответствовать вашим потребностям?

...