Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение формы внутри формы, форма в форме 
V
    Опции темы
Hohhi
Дата 13.7.2010, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



Доброго времени суток!
Идёт разработка приложения для нескольких типов пользователей. При входе в систему у каждого из пользователя, отображены те меню, отображение которых предполагают его полномочия. По щелчку на одном из пунктов меню в главной форме должны появляться дочерние(так было задумано первоначально), причем встраиваясь в главную форму. Было выбрано решение MDI-видимо, неудачное, так как отображаемая дочерняя форма вечно плывет относительно левого верхнего угла и есть глюки с размерами.  Около половины форм работы логики написаны и изменять их не хотелось бы менять принцип "форма внутри формы". Подскажите, как это лучше реализовать. Прикладываю код "провалившегося" класса Interlayer.cs, если кто-то заметит ошибки в моей логике работы с MDI, подскажите. 
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace EconomicView
{
    public class InterLayer
    {
        private int menuheight;
        private int borderheight;
        private int borderwidth;
        private string maintext;
        private Form childform;
        private MainForm mainform;
        public InterLayer(MainForm mf)
        {
            this.mainform = mf;
            this.childform = null;
            // this.maintext = this.mainform.Text;
            this.borderheight = this.mainform.Height - this.mainform.ClientSize.Height;
            this.borderwidth = this.mainform.Width - this.mainform.ClientSize.Width;
        }

        public void SetTitle(string title)
        {
            this.maintext = title;
        }
        /*
        public int BorderWidth
        {
            get
            {
                this.borderwidth = this.mainform.Width - this.mainform.ClientSize.Width;
                return this.borderwidth;
            }
        }

        public int BorderHeight
        {
            get
            {
                this.borderheight = this.mainform.Height - this.mainform.ClientSize.Height;
                return this.borderheight;
            }
        }
        */
        public void NewForm(Form frm)
        {
            if (this.childform != null)
            {
                this.childform.Close();
                this.childform.Dispose();
                this.childform = null;
            }
            this.childform = frm;
            this.childform.MdiParent = this.mainform;
            this.childform.ControlBox = false;
            //this.childform.AutoSize = true;
            this.childform.FormBorderStyle = FormBorderStyle.None;
            this.mainform.Text = this.maintext + " - [" + this.childform.Text + "]";

            this.childform.Top = this.mainform.ClientRectangle.Top +this.mainform.MenuStripClient.Height;
            this.childform.Left = 0;

            this.mainform.Height = this.childform.Height + borderheight + this.mainform.MenuStripClient.Height;
            this.mainform.Width = this.childform.Width + borderwidth;

            this.childform.Show();
            this.childform.Location = new Point(0, 24);
            this.mainform.AutoSize = true;
        }

        public void MaximizeWindow()
        {
            if (childform != null)
            {
                this.childform.Width = this.mainform.Width - borderwidth;
                this.childform.Height = this.mainform.Height - borderheight;
            }
        }

        public void CloseChild()
        {
            if (this.childform != null)
            {
                this.childform.Close();
            }
        }


    }
}


Благодарю
PM MAIL ICQ   Вверх
Hohhi
Дата 14.7.2010, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



Нашёл идеальное решение usercontrol, подправил приведенный выше класс- работает четко, но при перерисовке подмаргивает: уже как заказчик скажет так и будет. Вопрос снят
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0718 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.