выф. Ответы к защите 3 лабы по ООП. Лабораторная работа 3 Разработка gui. Создание sdiприложений
Скачать 0.87 Mb.
|
Вставка объекта MenuStrip в раскрывающееся меню MDIСоздайте форму и присвойте ее свойству IsMdiContainer значение true. Добавьте MenuStrip на Form1 и присвойте свойству AllowMerge для элемента MenuStrip значение true. Добавьте пункт меню верхнего уровня в Form1MenuStrip и присвойте его свойству Text значение &File. Добавьте в &File пункт меню три пункта подменю и задайте для &Open них Text свойства, &Import from и E&xit . Добавьте два пункта подменю в &Import from элемент подменю и задайте для &Word них Text Свойства и &Excel . Добавьте в проект форму, добавьте MenuStrip на форму и присвойте его свойству AllowMerge элемента Form2MenuStrip значение true. Добавьте пункт меню верхнего уровня в Form2MenuStrip и присвойте его свойству Text значение &File. Добавьте элементы &File подменю в меню Form2 в в следующем порядке: a ToolStripSeparator , &Save , Save and &Close и другой ToolStripSeparator . MergeActionЗадайте свойства и MergeIndex для Form2 пунктов меню, как показано в следующей таблице.
Создайте обработчик событий для события Click элемента &OpenToolStripMenuItem. В обработчик событий вставьте код, аналогичный приведенному в следующем примере для создания и отображения новых экземпляров Form2 в качестве дочерних окон MDI Form1. C#Копировать private void openToolStripMenuItem_Click(object sender, EventArgs e) { Form2 newMDIChild = new Form2(); // Set the parent form of the child window. newMDIChild.MdiParent = this; // Display the new form. newMDIChild.Show(); } Поместите код, аналогичный приведенному в следующем примере, в &OpenToolStripMenuItem, для регистрации обработчика событий. C#Копировать this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); https://docs.microsoft.com/ru-ru/dotnet/desktop/winforms/controls/how-to-insert-a-menustrip-into-an-mdi-drop-down-menu-windows-forms?view=netframeworkdesktop-4.8 Как установить определенному пункту меню сочетание клавиш? В окне Сервис > Параметры > среды выберите Клавиатура. Убедитесь, что для параметра использовать новый ярлык в выбрано значение Global. В поле Ввод сочетаний клавиш введите сочетание клавиш, которое нужно использовать. если сочетание клавиш уже используется в Visual Studio, в диалоговом окне, используемом в настоящий момент в качестве сочетания клавиш, будет отображаться команда, которая в данный момент вызывается. Попробуйте использовать разные сочетания ключей, пока не найдете тот, который не сопоставлен. Примечание Сочетания клавиш, использующие ALT , могут открывать меню, а не выполнять команду напрямую. Таким образом, сочетание клавиш, используемое в настоящий момент в поле, может быть пустым при вводе ярлыка, включающего ALT. Можно проверить, что ярлык не открывает меню, закрыв диалоговое окно Параметры и нажав клавиши. В следующей процедуре предполагается наличие существующего пакета VSPackage с командой меню. Если вам нужна помощь, ознакомьтесь со статьей Создание расширения с помощью команды меню. Назначение сочетания клавиш командеОткройте файл . vsct для пакета. Создайте пустой Предупреждение Дополнительные сведения о привязках ключей см. в разделе настраиваемое сочетание клавиш. В Задайте guid атрибуты и id для тех элементов команды, которую требуется вызвать. Присвойте mod1 атрибуту значение Control, ALT или SHIFT. Если для сочетания клавиш требуется более двух ключей, задайте mod2 key2 атрибуты и. В большинстве случаев SHIFT не следует использовать без второго модификатора, так как при нажатии на него наиболее буквенно-цифровой ключ вводится прописная буква или символ. С помощью кодов виртуальных клавиш можно получить доступ к специальным ключам, которые не содержат связанных с ними символов, например, функциональных клавиш и клавиши Backspace . Дополнительные сведения см. в разделе коды виртуальных клавиш. чтобы команда стала доступной в редакторе Visual Studio, задайте editor для атрибута значение guidVSStd97 . Чтобы команда стала доступной только в пользовательском редакторе, присвойте editor атрибуту имя пользовательского редактора, созданного Visual Studio шаблоном пакета при создании VSPackage, включающего пользовательский редактор. Чтобы найти значение имени, просмотрите https://docs.microsoft.com/ru-ru/visualstudio/extensibility/binding-keyboard-shortcuts-to-menu-items?view=vs-2022 Как создать панель инструментов? Элемент ToolStrip представляет панель инструментов. Каждый отдельный элемент на этой панели является объектом ToolStripItem. Ключевые свойства компонента ToolStrip связаны с его позиционированием на форме: Dock: прикрепляет панель инструментов к одной из сторон формы LayoutStyle: задает ориентацию панели на форме (горизонтальная, вертикальная, табличная) ShowItemToolTips: указывает, будут ли отображаться всплывающие подсказки для отдельных элементов панели инструментов Stretch: позволяет растянуть панель по всей длине контейнера В зависимости от значения свойства LayoutStyle панель инструментов может располагаться по горизонтали, или в табличном виде: HorizontalStackWithOverflow: расположение по горизонтали с переполнением - если длина панели превышает длину контейнера, то новые элементы, выходящие за границы контейнера, не отображаются, то есть панель переполняется элементами StackWithOverflow: элементы располагаются автоматически с переполнением VerticalStackWithOverflow: элементы располагаются вертикально с переполнением Flow: элементы располагаются автоматически, но без переполнения - если длина панели меньше длины контейнера, то выходящие за границы элементы переносятся, а панель инструментов растягивается, чтобы вместить все элементы https://metanit.com/sharp/windowsforms/5.1.php Как добавить несколько кнопок на панель инструментов? К каждому элементу выпадающего меню дополнительно можно прикрепить обработчик нажатия и обработать клик по этим пунктам меню ToolStripSplitButton: объединяет функциональность ToolStripDropDownButton и ToolStripButton Добавить новые элементы можно в режиме дизайнера: Также можно добавлять новые элементы программно в коде. Их расположение на панели инструментов будет соответствовать порядку добавления. Все элементы хранятся в ToolStrip в свойстве Items. Мы можем добавить в него любой объект класса ToolStripItem (то есть любой из выше перечисленных классов, так как они наследуются от ToolStripItem):
Кроме того, здесь задается обработчик, позволяющий обрабатывать нажатия по кнопки на панели инструментов. Элементы ToolStripButton, ToolStripDropDownButton и ToolStripSplitButton могут отображать как текст, так и изобажения, оибо сразу и то, и другое. Для управления размещением изображений в этих элементах имеются следующие свойства: DisplayStyle: определяет, будет ли отображаться на элементе текст, или изображение, или и то и другое. Image: указывает на само изображение ImageAlign: устанавливает выравнивание изображения относительно элемента ImageScaling: указывает, будет ли изображение растягиваться, чтобы заполнить все пространство элемента ImageTransparentColor: указывает, будет ли цвет изображения прозрачным https://metanit.com/sharp/windowsforms/5.1.php Как разместить на кнопке изображение? Чтобы указать разместить изображение на кнопке, у свойства DisplayStyle надо установить значение Image. Если мы хотим, чтобы кнопка отображала только текст, то надо указать значение Text, либо можно комбинировать два значения с помощью другого значения ImageAndText: https://metanit.com/sharp/windowsforms/5.1.php Как добавить новую форму в приложение? Добавьте новую форму в Visual Studio. В Visual Studio найдите панель Обозреватель проектов. Щелкните проект правой кнопкой мыши и выберите Добавить>Форма (Windows Forms) . В поле Имя введите имя формы, например MyNewForm. Visual Studio сформирует имя по умолчанию, которое является уникальным. Можно использовать это имя. После добавления формы Visual Studio откроет конструктор форм для этой формы. https://docs.microsoft.com/ru-ru/dotnet/desktop/winforms/forms/how-to-add?view=netdesktop-5.0 Как организовать переход к добавленной форме? Если у вас есть исходные файлы для формы, можно добавить форму в проект, скопировав файлы в папку проекта. Ссылки на все файлы кода в папке проекта и в дочерних папках проекта будут автоматически добавлены в проект. Форма включает два файла с одинаковыми именами и разными расширениями: form2.cs (form2 — пример имени файла) и form2.Designer.cs. Иногда присутствует файл ресурсов с тем же именем — form2.resx. В предыдущем примере form2 представляет собой базовое имя файла. Необходимо скопировать все связанные файлы в папку проекта. Кроме того, можно использовать Visual Studio для импорта файла в проект. При добавлении существующего файла в проект файл копируется в папку проекта. В Visual Studio найдите панель Обозреватель проектов. Щелкните проект правой кнопкой мыши и выберите Добавить>Существующий элемент. Перейдите в папку, содержащую файлы формы. Выберите файл form2.cs, где form2 — базовое имя файла для связанных файлов формы. Не выбирайте другие файлы, например form2.Designer.cs. https://docs.microsoft.com/ru-ru/dotnet/desktop/winforms/forms/how-to-add?view=netdesktop-5.0 Что такое модальная и немодальная форма? Как они вызываются? Модальные окна являются наиболее распространенным видом окон. Если открыто модальное окно, то чтобы попасть в основную программу, его обязательно нужно закрыть. Без закрытия модального окна невозможно перейти в программу, которая его вызвала. В программах Windows Forms возможна ситуация, когда одно модальное окно открывает другое (следующее) модальное окно. Таким образом получается цепочка вызовов. Как правило, модальное окно содержит кнопки типа OK, Cancel (или другие), при нажатии на которые это окно закрывается. Примером модального окна может быть команда Open… редактора Microsoft Word, которая открывает окно выбора файла. Пока не будет выбран файл или не будет нажата одна из кнопок отмены, перейти в редактор не удастся. При открытии немодального окна, существует возможность переключаться из окна в основную программу не закрывая это окно, и, наоборот, из основной программы можно снова вернуться в немодальное окно. Но при этом, визуально немодальное окно всегда размещается над основной программой. Как правило, немодальное окно содержит одну кнопку типа Close, которая его закрывает. Пример немодального окна – это команда «Insert Symbol» редактора Microsoft Word, которая позволяет вставлять символ в документ. Из окна вставки символа можно переключаться в основной документ и наоборот, из документа можно переходить в немодальное окно. https://www.bestprog.net/ru/2020/05/23/c-windows-forms-an-example-of-creating-a-modeless-form-in-a-windows-forms-application-modal-and-modeless-windows-ru/ Как организовать передачу данных между формами? При использовании немодальных форм важным есть обмен информацией между основной программой (главной формой) и немодальной формой. Здесь возможны две ситуации: передача информации из главной формы в немодальную. Эта ситуация решается без проблем, поскольку в основной форме создается экземпляр немодальной формы. Через этот экземпляр осуществляется доступ к компонентам немодальной формы стандартным способом; передача информации из немодальной формы в главную форму. Здесь возникает проблема: как из немодальной формы доступиться к экземпляру главной формы. Чтобы передать данные (информацию) с немодальной формы в главную, можно использовать один из следующих способов: С помощью статической ссылки на главную форму. Как известно, статические переменные есть глобальными, поэтому удобно могут использоваться для обмена информацией между разными разделенными экземплярами или процессами. Имея ссылку на главную форму, можно легко обращаться к компонентам этой формы. Этот способ наиболее прост в использовании. С помощью механизма событий. При этом способе в немодальной форме объявляется событие, которое возникает каждый раз, когда главной форме нужно передать информацию. Тем не менее, сам обработчик этого события помещается в главной форме. Если из немодальной формы нужно передать информацию главной форме, то возникает событие. В результате, в главной форме вызывается обработчик этого события. Этот обработчик получает объект типа «немодальное диалоговое окно», который сгенерировал событие. Имея доступ к измененному объекту немодального окна, можно обновить информацию в главной форме. С помощью записи информации во временный файл. Как известно, файлы подобны статическим переменным. Поэтому, записав порцию информации в файл в немодальной форме, можно ее прочитать в главной форме. Этот способ не является эффективным, поскольку работает медленнее (чтение из носителей информации происходит дольше чем из оперативной памяти). https://www.bestprog.net/ru/2020/05/23/c-windows-forms-an-example-of-creating-a-modeless-form-in-a-windows-forms-application-modal-and-modeless-windows-ru/ |