C# toolstrip не закрепляется под menustrip

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

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

stereoBar = new ToolStrip();
stereoBar.Anchor = (AnchorStyles)(AnchorStyles.Top | AnchorStyles.Left);
//y location is set to 22, the width of the menustrip
stereoBar.Location = new System.Drawing.Point(0, 22);
stereoBar.Dock = DockStyle.Top;
stereoBar.Name = "StereoToolbar";
stereoBar.Text = "Stereo Plugin Toolbar";
stereoBar.ShowItemToolTips = true;
stereoBar.GripMargin = new Padding(2);
Controls.Add(stereoBar);

Есть что-нибудь простое, что я здесь упускаю?

Заранее спасибо!

1 ответ

Решение

Как описано также в этом ответе, при стыковке элементов управления в форме имеет значение порядок их добавления в форму; т. е. при добавлении нескольких элементов управления, которые все прикрепляются к вершине, последний добавленный элемент управления будет самым верхним.

Таким образом, поскольку вы добавляете свою инструментальную полосу программно и полосу меню через конструктор, сначала выполняется код конструктора, поэтому полоска меню всегда находится внизу.

Я думаю, что есть три выхода из этой дилеммы:

Первый подход

Как отметил Ханс Пассант, самый простой способ привести все в порядок - просто позвонить

stereoBar.BringToFront();

сразу после того, как вы добавили его в элементы управления форм.

Второй подход

Чтобы обойти это, вы также можете add the menu strip programmatically and do this after you added the tool strip,

Третий подход

Другим выходом может быть добавление другого контейнера в форму (например, Panel или groupbox) через конструктор, который также прикрепляется к вершине, которая просто функционирует как заполнитель, куда вы добавляете свою панель инструментов (чтобы вы не добавляли ее в форму). прямо больше)

Другие вопросы по тегам