Добавление элементов управления в пользовательские элементы управления динамически - PullRequest
5 голосов
/ 19 февраля 2009

Я хочу добавить элемент управления в пользовательский элемент управления в обработчике событий (например, событие нажатия кнопки).

Я пытаюсь динамически добавить элемент управления просмотром в datagridview, но не смог заставить его работать, поэтому я попытался просто добавить кнопку с этим кодом:

private void btnCreateNewButton_Click(object sender, EventArgs e)
{
    Button btn = new Button();
    btn.Location = new Point(100, 640);
    btn.Size = new Size(100, 30);
    btn.Text = "Click Me";
    btn.Click += (s, ea) => MessageBox.Show("New button clicked");
    this.Controls.Add(btn);
}

Когда я нажимаю кнопку «Создать новую», кнопка не появляется.

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

this.Parent.Controls.Add(btn) and
this.ParentForm.Controls.Add(btn) 

но безрезультатно.

У кого-нибудь есть идеи?

Спасибо, Киран.

Ответы [ 2 ]

1 голос
/ 19 февраля 2009

Скорее всего, ваша кнопка находится за пределами родительского элемента управления и / или за другим элементом управления. Я не верю, что UserControls или Forms являются особыми в отношении добавления элементов управления во время выполнения, но простое отличие может заключаться в том, что формы по умолчанию могут быть изменяемого размера, тогда как UserControls - нет? В любом случае, я не думаю, что какой-либо тип элемента управления автоматически изменит размер, чтобы соответствовать всем их дочерним элементам управления, поэтому довольно просто поместить новый / динамический элемент управления в неправильное место и не показывать его.

1 голос
/ 19 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...