Получить связанную форму mdi ToolStripMenuItem - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть ToolStripMenuItem, который содержит список всех MdiChildren, открытых в моем приложении (список ToolStripDropDownItem). Этот список был сгенерирован автоматически с помощью свойства MenuStrip.MdiWindowListItem (на самом деле я установил его в конструкторе, но результат тот же).

Я хотел бы показать значки формы Mdi рядом с каждым выпадающим элементом. Итак, я проверил свойства выпадающего элемента при отладке приложения и увидел это (свойство с именем MdiForm): Property Screen Shot

Поэтому я попытался написать что-то подобное для доступа к нему (используя отражение):

foreach (ToolStripDropDownItem item in (sender as ToolStripMenuItem).DropDownItems)
{
    var type = item.GetType();
    var field = type.GetProperty("MdiForm");//Return null always
    ...
}

Но это не возвращает свойство MdiForm. Переменная «поле» всегда равна нулю. Углубившись вглубь, я понял, что хотя "item" имеет свойство MdiForm, item.GetType () не возвращает это же свойство!

Глядя на исходный код ToolStripMenuItem.cs здесь , я вижу это:

internal ToolStripMenuItem(Form mdiForm) {
    Initialize();
    Properties.SetObject(PropMdiForm,mdiForm);
}

А это:

internal Form MdiForm {
get { 
         if (Properties.ContainsObject(PropMdiForm)) {
             return Properties.GetObject(PropMdiForm) as Form; 
         } 
             return null;
         }
     }

Но я не уверен, как получить к этому доступ.

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