我想在事件处理程序(如按钮单击事件)中向用户控件添加控件。
我正在尝试动态添加一个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)
但无济于事。
有人有任何想法吗?
谢谢, 夏兰。
答案 0 :(得分:1)
您将按钮放在100,640点上。请确保您的用户控件可以容纳您的动态按钮。否则,你不会看到它。 我使用了你的代码,它对我来说很好,只需确保父表单和用户控件的正确大小。
答案 1 :(得分:1)
最有可能的是,您的按钮被放置在父控件的边界之外和/或在另一个控件之后。我不认为UserControls或Forms在运行时添加控件方面是特殊的,但一个简单的区别可能是默认情况下Forms是可重新调整大小而UserControls不是吗?无论哪种方式,我都不认为Control类型会自动调整大小以适应所有子控件,因此很容易将新的/动态控件放在错误的位置并使其不可见。