Может ли пользовательский контроль быть автономным как форма? - PullRequest
0 голосов
/ 22 марта 2011

Я не могу найти способ, как это сделать.Я полагаю, это должен быть ребенок другого контроля?

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Вы можете просто добавить его в пустую форму, что просто, если вы используете конструктор.Предполагая, что вы не хотите использовать конструктор, вы все равно можете сделать это с помощью кода.Что-то вроде:

MyUserControl control = new MyUserControl();

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

control.Dock = DockStyle.Fill;
containerForm.Show();
1 голос
/ 22 марта 2011

@ Джастин прав. Если вы хотите, вы можете создать методы расширения:

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();
    }
}

Вы также можете создавать методы расширения для отображения в диалоговых окнах и любых других вариантах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...