动态地向用户控件添加控件

时间:2009-02-19 12:44:21

标签: c# winforms user-controls

我想在事件处理程序(如按钮单击事件)中向用户控件添加控件。

我正在尝试动态添加一个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 个答案:

答案 0 :(得分:1)

您将按钮放在100,640点上。请确保您的用户控件可以容纳您的动态按钮。否则,你不会看到它。 我使用了你的代码,它对我来说很好,只需确保父表单和用户控件的正确大小。

答案 1 :(得分:1)

最有可能的是,您的按钮被放置在父控件的边界之外和/或在另一个控件之后。我不认为UserControls或Forms在运行时添加控件方面是特殊的,但一个简单的区别可能是默认情况下Forms是可重新调整大小而UserControls不是吗?无论哪种方式,我都不认为Control类型会自动调整大小以适应所有子控件,因此很容易将新的/动态控件放在错误的位置并使其不可见。