C# 向用户控件动态添加控件

C# 向用户控件动态添加控件,c#,winforms,user-controls,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, 3

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

我试图动态添加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) 
但是没有用

有人有什么想法吗

谢谢,
Ciaran.

您将按钮放在100640点上。请确保您的用户控件可以容纳动态按钮。否则,你就看不到了。
我使用了您的代码,它对我来说运行良好,只需确保父窗体和用户控件的大小都正确。

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

为此,出于某种原因,它显示在控件下方。我需要打电话给BringToFront()