В приложении MDI, когда дочерняя форма MDI развернута, значок формы используется в качестве значка контекстного меню, отображаемого слева от MenuStrip родительской формы. Когда я устанавливаю значок формы, используемой в приложении MDI, размером более 16x16 (я использую 32x32), значок рисуется немасштабированным, и меню изменяется в соответствии с размером. Обратите внимание, что если файл ICO также содержит версию значка 16x16, он работает нормально.
Следующее создает базовое приложение, которое показывает поведение:
- создать новое решение и проект WinForms
- изменить IsMdiContainer Form1 на
true
- добавить
MenuStrip
к Form1
- создайте новую форму, назовите ее
MdiChildForm
- установить значок
MdiChildForm
в файл ICO 32x32, вот тот, который я подготовил ранее
в Form1
добавьте элемент меню, дважды щелкните его, чтобы создать обработчик событий Click
, и добавьте следующее:
var child = new MdiChildForm();
child.MdiParent = this;
child.Show();
child.WindowState = FormWindowState.Maximized;
построить и запустить, нажать пункт меню
Обратите внимание, что при повторном нажатии на пункт меню значок меняется на значок по умолчанию, это описано в этом вопросе и здесь не проблема.
Я почти уверен, что это можно описать как «намеренно», но, тем не менее, это раздражает. Есть ли способ заставить значок контекстного меню уменьшаться, что-то вроде изменения размера исходного значка? Я, наверное, тоже так сделаю, но мне нужен какой-то общий код.