Создание компонента блока музыкальных кнопок SoundButtonBox
Оформим компоновочный блок кнопок в виде пользовательского
компонента-класса, наследующего базовый класс UserControl.
-
Выделите
в панели Solution Explorer узел UserControls и
добавьте к проекту новый файл с именем SoundButtonBox.cs командой
контекстного меню Add/User Control
-
В
режиме редактирования SoundButtonBox.cs[Design] перейдите
в панель инструментов Toolbox и двойным
щелчком на компоненте FlowLayoutPanel свитка Containers создайте
экземпляр компоновочной панели
-
Настройте
компоновочную панель согласно таблице свойств
Таблица свойств экземпляра компонента FlowLayoutPanel
Свойство |
Значение |
Пояснения |
Name |
flow
|
Имя экземпляра компоновочной панели |
AutoSize |
true |
Подстраиваться под содержимое |
FlowDirection |
TopDown |
Размещать сверху вниз |
WrapContents |
false |
Не переносить дочерние элементы в следующий столбец |
Dock |
Fill |
Распахнуть на всю клиентскую область родителя (формы) |
Location |
0; 0 |
Позиционировать в клиентской области родителя |
-
В режиме
редактирования SoundButtonBox.cs[Design] выделите
экземпляр flow, перейдите в панель инструментов Toolbox и
двойным щелчком на компоненте SoundButton добавьте в коллекцию объекта flow четыре экземпляра музыкальной кнопки
В силу настроек компоновочной панели, которая является родителем
кнопок, они расположаться в столбец друг за другом в порядке
их создания.
-
В раскрывающемся
списке верхней части панели Properties выберите элемент SoundButtonBox,
после чего он будет выделен в визуальном редакторе оболочки
-
Настройте
класс SoundButtonBox согласно таблице свойств
Таблица свойств класса SoundButtonBox
Свойство |
Значение |
Пояснения |
AutoSize |
true |
Подстраиваться под содержимое |
AutoSizeMode |
GrowAndShrink |
Подстраиваться под содержимое (расширяться и сжиматься) |
После этих действий вид компонента SoundButtonBox в
визуальном конструкторе должен стать таким
Далее мы должны настроить все четыре экземпляра нашей музыкальной
кнопки-компонента. Некоторые свойства, которые не требуют предварительных
действий для их вычисления, можно задать через панель
свойств оболочки Properties (но можно задать
и непосредственно в конструкторе класса). Но те свойства, которые
нуждаются в некоторых вычислительных операциях, зададим в конструкторе
класса SoundButtonBox.
Настройка части свойств объектов музыкальных кнопок через
панель свойств оболочки
-
Откройте
на редактирование файл SoundButtonBox.cs в режиме [Design] и, выделяя последовательно экземпляры кнопки, настройте их
свойства в соответствии с таблицами свойств, приведенными
ниже
Таблица свойств первой музыкальной кнопки
Свойство |
Значение |
Пояснения |
Name |
soundButton1 |
Имя экземпляра кнопки (сгенерировано автоматически оболочкой) |
AutoSize |
true |
Подстраиваться под надпись |
Anchor |
None |
Выравнивать по центру родителя |
Text |
Файл tada.wav в системном каталоге |
Надпись на кнопке |
Margin.All |
8 |
Наружный отступ по контуру кнопки |
WaveFile |
Пусто |
Будет определен в коде конструктора класса для загрузки
звука, расположенного в системном каталоге |
Таблица свойств второй музыкальной кнопки
Свойство |
Значение |
Пояснения |
Name |
soundButton2 |
Имя экземпляра кнопки (сгенерировано автоматически оболочкой) |
AutoSize |
true |
Подстраиваться под надпись |
Anchor |
None |
Выравнивать по центру родителя |
Text |
Файл SOUND827.WAV в каталоге исполняемой сборки |
Надпись на кнопке |
Margin.All |
8 |
Наружный отступ по контуру кнопки |
WaveFile |
Пусто |
Будет определен в коде конструктора класса для загрузки
звука, расположенного в файле |
Таблица свойств третьей музыкальной кнопки
Свойство |
Значение |
Пояснения |
Name |
Stream |
Имя экземпляра кнопки. Помечаем, чтобы распознать в переопределенном
методе деспетчеризации OnClick() и не открывать уже открытый
в конструкторе поток |
AutoSize |
true |
Подстраиваться под надпись |
Anchor |
None |
Выравнивать по центру родителя |
Text |
Файл Trumpet1.wav в ресурсе исполняемой сборки |
Надпись на кнопке |
Margin.All |
8 |
Наружный отступ по контуру кнопки |
WaveStream |
Пусто |
Будет определен в коде конструктора класса для загрузки
звука, расположенного в файле ресурсов
|
Таблица свойств четвертой музыкальной кнопки
Свойство |
Значение |
Пояснения |
Name |
Web |
Имя экземпляра кнопки. Помечаем, чтобы распознать в переопределенном
методе деспетчеризации OnClick() и не обращаться в Web
(считаем, что Internet пока что не подключен) |
AutoSize |
true |
Подстраиваться под надпись |
Anchor |
None |
Выравнивать по центру родителя |
Text |
Файл azlinsnd.wav, загружаемый из Web по URL (отключено) |
Надпись на кнопке |
Margin.All |
8 |
Наружный отступ по контуру кнопки |
WaveFile |
http://www.oaklandzoo.org/atoz/azlinsnd.wav
|
Подключаем для загрузки из Web, но в переопределенном
методе деспетчеризации OnClick() распознаем по имени нажатой
кнопки и заменяем другим звуком, встроенным в класс SystemSounds
библиотеки .NET Framework |
Интерфейсная часть блока кнопок после их настройки должна
выглядеть так