Member 11790928 Ответов: 2

Как динамически добавлять текстовое поле и соответствующим образом перемещать другие компоненты формы?


У меня есть простая форма windows для получения сведений о пользователе. Если пользователь хочет добавить альтернативный номер мобильного телефона, нажав кнопку"+", под ним должно появиться текстовое поле, а другие текстовые поля должны расположиться в соответствии с недавно добавленным текстовым полем. Я могу динамически добавлять текстовое поле во время выполнения, но не могу изменить положение другого компонента формы относительно динамически добавляемого текстового поля. Ниже приведен мой код и снимок формы. Заранее спасибо.

Что я уже пробовал:

Я могу динамически добавлять текстовое поле во время выполнения, но не могу изменить положение другого компонента формы относительно динамически добавляемого текстового поля. Ниже приведен мой код и снимок формы. Заранее спасибо.
TextBox txtRun = new TextBox();
txtRun.Name = "txtDynamic" + c++;
txtRun.Location = new System.Drawing.Point(90, 74 + (20 * c));
txtRun.Size = new System.Drawing.Size(200, 25);
txtRun.Location.X = 90;
txtRun.Location.Y = 74;
this.Controls.Add(txtRun);

Ralf Meier

Почему нет... где ты застрял ?
Где отображается новое текстовое поле и какие другие элементы управления должны переместиться туда ?

2 Ответов

Рейтинг:
1

johannesnestler

Так что лучше перестаньте использовать фиксированные позиции и размеры для ваших элементов управления - теперь у нас есть 2017 год - все динамическое и размерное ;)
Нет, это не только шутка - отойдите от позиционирования контроля местоположения/размера, используйте (я подозреваю WinFoms - почему бы не пометить ваш вопрос соответствующим образом?) Концепции якоря и док-станции-также узнайте о Z-порядке...
Я настоятельно рекомендую создать простую примерную форму и поиграть в нее с док-станцией и якорем, чтобы почувствовать ее (и Z-порядок) - я научился этому "мышлению" давным - давно с помощью родного C++ Windows API-когда .Сеть прибыла, мне никогда не приходилось использовать конструктор для позиционирования моих элементов управления - я мог сделать это в своей голове ;)
Кстати, теперь у нас есть WPF-где фиксированное положение управления inig/sizing является редким исключением...

Поэтому я надеюсь, что вы поняли то, что я хотел сказать: не пишите алгоритм для расчета новых позиций и размеров, используйте встроенную логику якоря/док-станции.

С уважением
Иоганнес


CHill60

5'd, чтобы противостоять 1-голосу. Это мудрый совет.

johannesnestler

спасибо, холодок - может быть, мне не стоит быть таким саркастичным :|

Рейтинг:
1

Member 13031989

int cleft = 1;

TextBox txt = new TextBox();
this.Controls.Add(txt);
txt.Top = cleft * 40;
txt.Size = new Size(200, 16);
txt.Left = 150;
cleft = cleft + 1;
return;