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) через конструктор, который также прикрепляется к вершине, которая просто функционирует как заполнитель, куда вы добавляете свою панель инструментов (чтобы вы не добавляли ее в форму). прямо больше)