C # Winforms - Добавление форм в элемент управления FlowPanel - PullRequest
3 голосов
/ 12 марта 2009

У меня есть страница, где я должен изменить переменные, которые являются строками с парами значений и меток. Я использовал объект datagrid, но его недостаточно для того, что требуется (или в конечном итоге не будет).

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

Каков «правильный» или «стандартный» способ сделать это.

Ответы [ 2 ]

2 голосов
/ 12 марта 2009

Чтобы добавить экземпляры формы на панель разметки, я делаю следующее:

Form1 f1 = new Form1();
f1.TopLevel = false;
f1.Visible = true;
flowLayoutPanel1.Controls.add(f1);

Кажется, работает нормально в моем тестовом коде.

2 голосов
/ 12 марта 2009

Данные (в парах) звучат так, как будто они лучше подходят для TableLayoutPanel, но теория та же самая; просто позвоните .Controls.Add(...) и оно должно работать:

    FlowLayoutPanel panel = new FlowLayoutPanel();
    Form form = new Form();
    panel.Dock = DockStyle.Fill;
    form.Controls.Add(panel);

    for (int i = 0; i < 100; i++)
    {
        panel.Controls.Add(new TextBox());
    }

    Application.Run(form);

или TableLayoutPanel:

    TableLayoutPanel panel = new TableLayoutPanel();
    Form form = new Form();
    panel.Dock = DockStyle.Fill;
    panel.ColumnCount = 2;
    form.Controls.Add(panel);

    for (int i = 0; i < 100; i++)
    {
        panel.Controls.Add(new Label { Text = "label " + i });
        panel.Controls.Add(new TextBox { Text = "text " + i });
    }

Кроме того, мне интересно, будет ли PropertyGrid лучше соответствовать вашим потребностям? Он будет обрабатывать всю логику «get value», «show value», «parse value», «store value» и может быть связан с такими вещами, как ICustomTypeDescriptor, чтобы разрешить динамические свойства.

...