Опубликован: 13.07.2010 | Уровень: специалист | Доступ: платный
Самостоятельная работа 26:

Пользовательские элементы управления

Создание компонента блока музыкальных кнопок 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

Интерфейсная часть блока кнопок после их настройки должна выглядеть так


Иван Циферблат
Иван Циферблат
Россия, Таганрог, 36, 2000