Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2012, 22:55   #1
hitman12
Пользователь
 
Аватар для hitman12
 
Регистрация: 20.09.2009
Сообщений: 88
По умолчанию Форма в форме

Собственно это и есть вопрос) В генеральной форме есть элемент панель или ToolStripContainer? как в нем создать форму которая будет находится в генеральной форме и не может уходить за ее границы?

Последний раз редактировалось hitman12; 02.09.2012 в 23:12.
hitman12 вне форума Ответить с цитированием
Старый 02.09.2012, 23:24   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Это называется MDI окна... смотрим msdn
Поэтому контейнером подобных окон могут быть окна:
Код:
// Главная форма:
private void MainForm_Load(object sender, EventArgs e)
{
   this.IsMdiContainer = true;
}
// Дочерняя форма
private void Child_Click(object sender, EventArgs e)
{
   Form2 form2 = new Form2();
   form2.MdiParent = this;
   form2.Show();
}
Но если уж слишком хочется назначить контейнер не форму, то можно посмотреть вот такое решение: stackoverflow
Код:
// Mdi-Panel definiton:
public class MdiClientPanel : Panel
{
    private Form mdiForm;
    private MdiClient ctlClient = new MdiClient();

    public MdiClientPanel()
    {
        base.Controls.Add(this.ctlClient);
    }

    public Form MdiForm
    {
        get
        {
            if (this.mdiForm == null)
            {
                this.mdiForm = new Form();
                /// set the hidden ctlClient field which is used to determine if the form is an MDI form
                System.Reflection.FieldInfo field = typeof(Form).GetField("ctlClient", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
                field.SetValue(this.mdiForm, this.ctlClient);
            }
            return this.mdiForm;
        }
    }
}

Usage:
// mdiChildForm is the form that should be showed in the panel
// mdiClientPanel is an instance of the MdiClientPanel
myMdiChildForm.MdiParent = mdiClientPanel1.MdiForm;
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 03.09.2012, 09:58   #3
hitman12
Пользователь
 
Аватар для hitman12
 
Регистрация: 20.09.2009
Сообщений: 88
По умолчанию

Большое спасибо)
hitman12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма в форме ins813 Общие вопросы Delphi 12 22.05.2012 12:21
Форма в форме canopy Компоненты Delphi 5 04.11.2010 13:26
Форма на форме) Irina_87 Компоненты Delphi 3 28.04.2010 09:32
Форма в форме Родион Общие вопросы Delphi 1 15.06.2008 23:00
Форма в форме Ferro Общие вопросы Delphi 2 09.11.2007 14:42