перейти от формы к пользовательскому элементу управления - PullRequest
1 голос
/ 21 мая 2009

У меня есть несколько форм, которые я встраиваю в закладки ( некоторые из них встроены в два и три слоя глубиной ), которые, как я подозреваю, доставляют мне неприятности. Мне сказали, что пользовательский контроль - лучший подход.

  • Теперь мне интересно, как я можно сделать это так быстро, как возможно.

  • Это так же просто, как скопировать и вставить?

  • Кто-нибудь когда-нибудь делал что-то вроде это?

У меня есть около 40 форм, которые я должен встроить, которые нужно будет переместить, и не так много времени, чтобы сделать это, поэтому любая помощь очень ценится.

РЕДАКТИРОВАТЬ 1

Вот как я встраиваю формы:

        public static void ShowFormInContainerControl(Control ctl, Form frm)
    {
        frm.TopLevel = false;
        frm.FormBorderStyle = FormBorderStyle.None;
        frm.Dock = DockStyle.Fill;
        frm.Visible = true;
        ctl.Controls.Add(frm);
    }

        public static void DockControl(this Control control, UserControl userControl)
    {
        userControl.Dock = DockStyle.Fill;
        control.Controls.Clear();
        control.Controls.Add(userControl);
    }

1 Ответ

8 голосов
/ 21 мая 2009

Не уверен, что это «лучший», но это, вероятно, самый эффективный. Измените классы для наследования от UserControl вместо Form. Затем исправьте ошибки компилятора, если / когда вы их получите (см. ПРИМЕЧАНИЕ 2 ниже).

ПРИМЕЧАНИЕ 1. Если вы не используете контроль версий, начните использовать его, прежде чем делать что-то радикальное. Вам захочется вернуться назад, если что-то пойдет слишком далеко на юг.

ПРИМЕЧАНИЕ 2. Если вы используете какие-либо конкретные события или свойства Form, которые не реализованы в UserControl, вам придется подумать о решении. Некоторые свойства (например, Icon) можно просто проигнорировать (= удалить строку из файла конструктора).

ПРИМЕЧАНИЕ 3. Если вы где-то используете формы в качестве реальной формы, вам также понадобится форма, которая использует только что созданный UserControl. Скорее всего, у вас возникнут проблемы с именами, так что следите за этим.

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