Удаление стандартного меню MDI формы MDI-контейнера, когда дочерний объект MDI развернут - PullRequest
4 голосов
/ 11 июня 2009

Я работаю над приложением .NET C #, которое имеет основную форму - контейнер MDI. Когда пользователь максимизирует дочерний MDI, Windows рисует полосу управления прямо под строкой заголовка формы контейнера, в которой есть значок дочернего элемента и системные кнопки справа. По сути, мне нужно скрыть эту полосу и использовать пользовательский элемент управления для обеспечения той же функциональности.

Есть ли способ запретить Windows рисовать эту полосу MDI?

Ответы [ 3 ]

8 голосов
/ 25 июня 2009

На самом деле, я нашел простой и интересный способ удалить эту вещь из моей формы, назначив свойство MainMenuStrip формы с помощью фиктивного элемента управления MenuStrip (без помещения его в коллекцию Controls формы):

private void OnForm_Load(object sender, EventArgs e)
{
    this.MainMenuStrip = new MenuStrip();
}

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

0 голосов
/ 10 декабря 2010

Существует более простой способ, чем добавление кода в событие Load для каждой формы. Просто поместите этот код в форму MdiParent и замените MenuStrip на фактическое имя, которое вы используете для элемента управления Menustrip.

Private Sub MenuStrip_ItemAdded(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemEventArgs) Handles MenuStrip.ItemAdded
        Dim s As New String(e.Item.GetType().ToString())
        If s = "System.Windows.Forms.MdiControlStrip+SystemMenuItem" Then
            e.Item.Visible = False
        End If
    End Sub
0 голосов
/ 23 июня 2009

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

http://answers.google.com/answers/threadview/id/135136.html

Любая другая тема, которую я могу найти в Интернете, либо заброшена без ответов, либо в тупик. Я не могу поверить в эту функциональность, если она настолько громоздкая, а не что-то изначально доступное.

...