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

5

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

我尝试动态添加 datagridview lookup 控件,但无法使其正常工作,因此我尝试使用以下代码仅添加一个按钮:

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。
2个回答

1

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


1
谢谢,它因某种原因显示在控件下方。我需要调用BringToFront()。 - Ciaran O'Neill

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接