以编程方式在Windows窗体中添加新用户控件

4

首先,我想指出我知道这个话题已经有其他几个问题了,而且我之前也做过这件事。但我在这里提问是因为我不知道我的问题在哪里。

以下是我尝试显示新用户控件的代码:

private void ValidationLabel_Click(object sender, EventArgs e)
    {
        EntrySuggestion t_ES = new EntrySuggestion();
        t_ES.Show();
        MainScreen home = new MainScreen();
        home.Show();
    }

我试图让 t_ES 显示出来(目前未能显示),但主屏幕可以。这两者都是用户控件。

以下是我的 EntrySuggestion 用户控件代码:

 using System;
using System.Collections;
using System.Windows.Forms;

namespace TeamManagementSystem
{
    public partial class EntrySuggestion : UserControl
    {
        private ArrayList items = new ArrayList();

        public EntrySuggestion()
        {
            InitializeComponent();
        }

        public EntrySuggestion(ArrayList i)
        {
            InitializeComponent();
            items = (ArrayList)i.Clone();
        }

        private void EntrySuggestion_Load(object sender, EventArgs e)
        {
            foreach (string item in items)
            {
                RadioButton t_RB = new RadioButton();
                t_RB.Text = item;
                ItemSuggestionTable.Controls.Add(t_RB);
            }
        }
    }
}

我希望使用第二个构造函数,但无论如何都无法使其正常工作。如果有任何帮助,将不胜感激。

6
MainScreen是从一个Form派生而来的吗?你不能简单地显示浮动的UserControl,它们需要锚定到某个东西。 - LightStriker
我在尝试回忆...当您向 Windows 窗体添加控件(在您的情况下,是 t_RB 单选按钮)时,您是否需要显式设置它们的可见性才能使它们显示出来? - Wonko the Sane
你检查过它的边界是否在屏幕上吗?它已经添加到表单控件中了吗? - Pharap
主屏幕实际上是一个表单,我不记得这样做了。表单和用户控件之间有什么区别?没有其他方法来显示弹出式用户控件吗? - lamilambkin
4
将该控件添加到表单中,并显示该表单。 - mbeckish
如果您想显示一个弹出式用户控件,您需要将它放入一个窗口中,否则,您如何关闭它呢? - Bolu
3个回答

10

您需要将用户控件添加到主窗体(或其他已存在的容器)的显示表面上。

    MainScreen home = new MainScreen();
    home.Show();
    EntrySuggestion t_ES = new EntrySuggestion();
    home.Controls.Add(t_ES);

2
将您的用户控件添加到表单中:
home.Controls.Add(t_ES);

0
要么使输入建议继承表单类,要么使用form.Controls.Add将其添加到现有表单中。请记住,它是一个用户控件,而不是用户窗体,因此它无法自我支持,它需要一个容器,并且最终必须在某个地方含有它的表单。

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