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

ел бы знать, как правильно создать полноэкранный вид элемента управления вкладки. Эта страница имеет другие элементы управления, и эти элементы управления имеют различные события, которые подписаны. Я пытался создать новую полноэкранную форму и скопировать все элементы управления вкладками в эту форму, но при таком подходе мне нужно повторно подписать каждый элемент управления на соответствующий обработчик. Если я только добавляю ссылки, подписка остается, но когда полноэкранная форма закрывается, ссылочные скопированные элементы управления теряются.

 Reddog07 янв. 2011 г., 01:58
Есть шанс, что это может помочь -stackoverflow.com/questions/2419356/...

Ответы на вопрос(1)

Решение Вопроса

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

    public static void ShowFullScreen(Control ctl) {
        // Setup host form to be full screen
        var host = new Form();
        host.FormBorderStyle = FormBorderStyle.None;
        host.WindowState = FormWindowState.Maximized;
        host.ShowInTaskbar = false;
        // Save properties of control
        var loc = ctl.Location;
        var dock = ctl.Dock;
        var parent = ctl.Parent;
        var form = parent;
        while (!(form is Form)) form = form.Parent;
        // Move control to host
        ctl.Parent = host;
        ctl.Location = Point.Empty;
        ctl.Dock = DockStyle.Fill;
        // Setup event handler to restore control back to form
        host.FormClosing += delegate {
            ctl.Parent = parent;
            ctl.Dock = dock;
            ctl.Location = loc;
            form.Show();
        };
        // Exit full screen with escape key
        host.KeyPreview = true;
        host.KeyDown += (KeyEventHandler)((s, e) => {
            if (e.KeyCode == Keys.Escape) host.Close();
        });
        // And go full screen
        host.Show();
        form.Hide();
    }

Пример использования:

    private void button1_Click(object sender, EventArgs e) {
        ShowFullScreen(tabControl1);
    }
 mjsr07 янв. 2011 г., 11:49
спасибо, Ганс, с самой вкладкой не работает, но с вкладкой да. Чтобы добавить другие элементы управления, которые мне также нужны в полноэкранном режиме, я добавил панель и поместил внутрь все, что мне нужно, и на экране showfull я пропускаю эту панель. Теперь мне нужно подумать, как я могу использовать все доступное пространство, возможно, панель имеет заливку дока, все другие элементы управления используют его стандартный размер. Другое дело, что в цикле «Время» нужно проверять наличие родительского элемента, если его нет, то разрывать.
 AlanB25 июл. 2012 г., 16:12
Для более старого C # замените «var» подходящим типом объекта (например, var loc -> Point loc). Также измените "(KeyEventHandler) ((s, e)" на "делегировать (объект s, KeyEventArgs e)". Это удалило "(", поэтому потеряйте ")" в конце строки
 l33t08 авг. 2012 г., 13:20
Также я бы добавилe.Handled = true; как раз перед закрытием формы. В противном случае нажатие клавиши будет распространяться в другое окно!
 mjsr07 янв. 2011 г., 12:56
после пары настроек полноэкранный вид был красивым. Я собираюсь добавить вас в список соавторов в титрах моего приложения, XD, еще раз спасибо.
 AlanB25 июл. 2012 г., 16:04
У меня были некоторые проблемы с неправильными размерами элементов управления Dock = Fill ... классическая проблема порядка рендеринга. Добавлен ctl.BringToFront (); перед формой. Show ();

Ваш ответ на вопрос