用户控制可以单独作为表单吗?

时间:2011-03-22 14:48:48

标签: .net forms

我找不到办法如何做到这一点。我认为它需要是不同控制的孩子?

2 个答案:

答案 0 :(得分:2)

您可以将其添加到空表单中,如果您使用设计器,这很简单。假设您不想使用设计器,您仍然可以使用代码执行此操作。类似的东西:

MyUserControl control = new MyUserControl();

Form containerForm = new Form();
containerForm.ClientSize = control.Size;
containerForm.Controls.Add(control);

control.Dock = DockStyle.Fill;
containerForm.Show();

答案 1 :(得分:1)

@Justin是对的。如果需要,可以创建扩展方法:

new MyUserControl().ShowInForm();
new MyUserControl().ShowInForm((frm)=>{
    frm.Text = "My user control";
});

public static class MyExtensions {
    public static void ShowInForm(this Control ctl) {
        ShowInForm(ctl, (Action<Form>)null);
    }
    public static void ShowInForm(this Control ctl, Action<Form> initFormAction) {
        // removes control from previous container
        ctl.Parent = null;

        var frm = new Form();
        frm.ClientSize = ctl.Size;
        ctl.Dock = DockStyle.Fill;
        frm.Controls.Add(ctl);
        frm.Show();
    }
}

您还可以在对话框窗口和其他任何变体中创建展示的扩展方法。