Дочерняя форма MDI, наложенная панелью с заполнением док-станции свойств

Описание

  1. У меня есть основная форма (Главная) со свойством IsMDIContainer, установленным в значение true.
  2. Затем я добавил панель в форму и установил для нее свойство DOCK значение FILL.
  3. После этого я создал дочернюю форму (продукты) и открываю в основной форме нажатием кнопки.

Проблема, с которой я столкнулся

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

Что я пробовал

  1. Свойство IsMDIContainer формы HOME изменено на false.

  2. сменить панель DOCK на нижнюю (для теста)

  3. Снова установите для IsMDIConatiner значение true, я получил форму.

Чего я хочу?

я хочу, чтобы эта панель была заполнена док-станцией, и хочу, чтобы родительский и дочерний функции MDI работали.

введите описание изображения здесь


person Zohaib Waqar    schedule 13.03.2019    source источник
comment
Это нормальное поведение. Когда вы помещаете панель в свою основную форму и закрепляете ее, доступным пространством для ваших mdichild-форм становится только оставшаяся часть (вся часть вашей основной формы, которая не заполняется панелью). Таким образом, установив docked = fill, вы не оставите места для дочерних форм mdi. Чего ты пытаешься достичь, может есть другой способ сделать это   -  person GuidoG    schedule 13.03.2019
comment
Вы хотите изменить цвет задней части клиентской области MDI?   -  person Reza Aghaei    schedule 13.03.2019
comment
серая область, которую вы видите, не является клиентской областью формы. На самом деле это элемент управления, который называется MdiClient. Если вы хотите изменить его цвет, вы можете просто использовать коллекцию MDiParent.Controls, найти MdiClient и изменить его BackColor.   -  person Jimi    schedule 13.03.2019
comment
На самом деле я хочу достичь родительской и дочерней функциональности mdi. Дочерняя форма при свертывании переходит в нижнюю часть родительской формы, а не на панель задач. Также нужна эта панель со свойством док-станции.   -  person Zohaib Waqar    schedule 13.03.2019
comment
Зачем вам нужна панель внутри MDIContainer? С какой целью?   -  person Jimi    schedule 13.03.2019
comment
Эта панель (dock = fill) будет содержать графики и диаграммы популярных товаров. Даже если я не использую панель и устанавливаю свойство dock = fill для графиков и диаграмм, все равно возникает такая же проблема.   -  person Zohaib Waqar    schedule 14.03.2019
comment
Короче, будет какая-то панель или график со свойством заливки стыковки. Есть ли способ заставить контейнер mdi работать с этим   -  person Zohaib Waqar    schedule 14.03.2019
comment
Для этого вы используете дочерние формы MDIContainer. Ваши элементы управления найдут свое место внутри одной или нескольких дочерних форм. Для этого и предназначен MDIContainer: для размещения других форм. Которая, как обычно, будет содержать другие элементы управления. Вместо этого MDIContainer не предназначен для размещения стандартных элементов управления. Просто формы.   -  person Jimi    schedule 14.03.2019
comment
@ Джими, я думаю, я не могу объяснить тебе мою проблему. Я знаю, что родительская форма MDI будет работать с дочерней формой, но что, если мне нужна панель со свойством заполнения док-станции в родительской форме. Итак, мой вопрос: возможно ли, чтобы эта панель со свойством заполнения док-станции в родительской форме, а также родительская форма действовала как контейнер MDi. Или есть способ, я должен попробовать   -  person Zohaib Waqar    schedule 14.03.2019
comment
MDIContainer, напротив, не предназначен для размещения стандартных элементов управления. Просто формы.   -  person Jimi    schedule 14.03.2019
comment
так вы говорите, что выхода нет   -  person Zohaib Waqar    schedule 14.03.2019


Ответы (1)


Установка свойства TopMost дочерней формы на true и ShowOnTaskBar на false, я исправил

  1. Установите для свойства формы показывать на панели задач значение false
  2. Вызов метода изменения размера формы проверил FormWindowState
  3. если он минимизирован, я устанавливаю для свойства TopMost дочерней формы значение true

        private void Form1_Resize(object sender, EventArgs e)
        {
            Form minimizedForm = sender as Form;
            if (minimizedForm.WindowState == FormWindowState.Minimized)
            {
    
                minimizedForm.TopMost = true;
            }
        }
    
person Zohaib Waqar    schedule 14.03.2019