【问题标题】:Adding controls to User Controls dynamically动态添加控件到用户控件
【发布时间】:2009-02-19 12:44:21
【问题描述】:

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

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

但无济于事。

有人有什么想法吗?

谢谢, 夏兰。

【问题讨论】:

    标签: c# winforms user-controls


    【解决方案1】:

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

    【讨论】:

    • 谢谢,由于某种原因,它显示在控件下方。我需要打电话给 BringToFront()
    【解决方案2】:

    很可能只是您的按钮被放置在父控件的范围之外和/或位于另一个控件的后面。我不相信 UserControls 或 Forms 在运行时添加控件方面有什么特别之处,但一个简单的区别可能是 Forms 默认可调整大小而 UserControls 不是?无论哪种方式,我认为任何一种控件类型都不会自动调整大小以适应所有子控件,因此很容易将新的/动态控件放在错误的位置并使其不可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-06
      • 2011-10-27
      • 2012-06-13
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      相关资源
      最近更新 更多