|
Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Пользовательские элементы управления
Настройка части свойств объектов музыкальных кнопок в конструкторе класса SoundButtonBox
-
Добавьте в конец конструктора класса SoundButtonBox одноименного файла C# код, чтобы класс стал таким
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace MyCompany.UserControls
{
public partial class SoundButtonBox : UserControl
{
public SoundButtonBox()
{
InitializeComponent();
// Подключить первую кнопку к звуковому файлу
soundButton1.WaveFile = System.IO.Path.Combine( // Склеить два пути
Environment.GetEnvironmentVariable("windir"), // Каталог системы
@"Media\tada.wav");
// Подключить вторую кнопку к звуковому файлу
soundButton2.WaveFile = "SOUND827.WAV";
// Подключить третью кнопку к звуковому файлу из файла ресурсов сборки
Stream.WaveStream = this.GetType().Assembly.GetManifestResourceStream(
"MyCompany.UserControls.Trumpet1.wav");
}
}
}
Листинг
17.8 .
Класс SoundButtonBox в файле SoundButtonBox.cs
Ниже приведен код, формируемый оболочкой при настройке компонента SoundButtonBox в визуальном режиме
namespace MyCompany.UserControls
{
partial class SoundButtonBox
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true
if managed resources should be disposed;
otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.flow = new System.Windows.Forms.FlowLayoutPanel();
this.soundButton1 = new MyCompany.UserControls.SoundButton
(this.components);
this.soundButton2 = new MyCompany.UserControls.SoundButton
(this.components);
this.Stream = new MyCompany.UserControls.SoundButton
(this.components);
this.Web = new MyCompany.UserControls.SoundButton
(this.components);
this.flow.SuspendLayout();
this.SuspendLayout();
//
// flow
//
this.flow.AutoSize = true;
this.flow.Controls.Add(this.soundButton1);
this.flow.Controls.Add(this.soundButton2);
this.flow.Controls.Add(this.Stream);
this.flow.Controls.Add(this.Web);
this.flow.Dock = System.Windows.Forms.DockStyle.Fill;
this.flow.FlowDirection =
System.Windows.Forms.FlowDirection.TopDown;
this.flow.Location = new System.Drawing.Point(0, 0);
this.flow.Name = "flow";
this.flow.Size = new System.Drawing.Size(440, 172);
this.flow.TabIndex = 0;
this.flow.WrapContents = false;
//
// soundButton1
//
this.soundButton1.Anchor = System.Windows.Forms.AnchorStyles.None;
this.soundButton1.AutoSize = true;
this.soundButton1.Location = new System.Drawing.Point(88, 8);
this.soundButton1.Margin = new System.Windows.Forms.Padding(8);
this.soundButton1.Name = "soundButton1";
this.soundButton1.Size = new System.Drawing.Size(264, 27);
this.soundButton1.TabIndex = 0;
this.soundButton1.Text = "Файл tada.wav в системном каталоге";
this.soundButton1.UseVisualStyleBackColor = true;
this.soundButton1.WaveFile = "";
this.soundButton1.WaveStream = null;
//
// soundButton2
//
this.soundButton2.Anchor = System.Windows.Forms.AnchorStyles.None;
this.soundButton2.AutoSize = true;
this.soundButton2.Location = new System.Drawing.Point(28, 51);
this.soundButton2.Margin = new System.Windows.Forms.Padding(8);
this.soundButton2.Name = "soundButton2";
this.soundButton2.Size = new System.Drawing.Size(384, 27);
this.soundButton2.TabIndex = 1;
this.soundButton2.Text = "Файл SOUND827.WAV
в каталоге исполняемой сборки";
this.soundButton2.UseVisualStyleBackColor = true;
this.soundButton2.WaveStream = null;
//
// Stream
//
this.Stream.Anchor = System.Windows.Forms.AnchorStyles.None;
this.Stream.AutoSize = true;
this.Stream.Location = new System.Drawing.Point(41, 94);
this.Stream.Margin = new System.Windows.Forms.Padding(8);
this.Stream.Name = "Stream";
this.Stream.Size = new System.Drawing.Size(358, 27);
this.Stream.TabIndex = 2;
this.Stream.Text = "Файл Trumpet1.wav
в ресурсе исполняемой сборки";
this.Stream.UseVisualStyleBackColor = true;
this.Stream.WaveFile = "";
this.Stream.WaveStream = null;
//
// Web
//
this.Web.Anchor = System.Windows.Forms.AnchorStyles.None;
this.Web.AutoSize = true;
this.Web.Location = new System.Drawing.Point(8, 137);
this.Web.Margin = new System.Windows.Forms.Padding(8);
this.Web.Name = "Web";
this.Web.Size = new System.Drawing.Size(424, 27);
this.Web.TabIndex = 3;
this.Web.Text = "Файл azlinsnd.wav,
загружаемый из Web по URL (отключено)";
this.Web.UseVisualStyleBackColor = true;
this.Web.WaveFile =
"http://www.oaklandzoo.org/atoz/azlinsnd.wav";
this.Web.WaveStream = null;
//
// SoundButtonBox
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
this.AutoSizeMode =
System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.Controls.Add(this.flow);
this.Name = "SoundButtonBox";
this.Size = new System.Drawing.Size(440, 172);
this.flow.ResumeLayout(false);
this.flow.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.FlowLayoutPanel flow;
private SoundButton soundButton1;
private SoundButton soundButton2;
private SoundButton Stream;
private SoundButton Web;
}
}
Листинг
17.9 .
Код файла SoundButtonBox.Designer.cs
Подготовка файлов звука к проигрыванию компонентом SoundButtonBox
Присоединим адресуемые звуки к проекту нашей библиотеки компонентов UserControls.
Первый звук: Первый звук tada.wav хранится в системном каталоге Windows и путь к нему мы формируем с использованием библиотечного класса Environment.
Второй звук: Второй звук SOUND827.WAV (или любой другой) код компонента ищет в каталоге размещения самой сборки. Для того, чтобы он там оказался, выполните следующее:
-
В панели Solution Explorer выделите узел проекта UserControls и командой оболочки Project/Add Existing Item загрузите нужный файл в каталог проекта. Файл будет скопирован в каталог размещения проекта (звук SOUND827.WAV находится в прилагаемом к данной работе каталоге Source )
Выполненным действием мы скопировали файл звука пока-что в каталог размещения проекта. А он должен находиться в каталоге размещения самой сборки кода компонента. Нам нужно настроить оболочку для работы с этим файлом так, чтобы при компиляции кода компонента она автоматически копировала звук в каталог размещения сборки самого компонента.
-
В панели Solution Explorer вызовите контекстное меню для скопированного файла звука SOUND827.WAV и выполнить команду Properties. Установите опцию Copy to Output Directory в значение Copy if newer (копировать при обновлении файла звука) или Copy always (копировать всегда). Теперь оболочка сама при компиляции проекта разместит файл в одном со сборкой компонента каталоге
Третий звук: Свойство WaveStream используется для проигрывания звука, присоединенного к исполняемому файлу как внедренный ресурс. Файл Trumpet1.wav внедряемого как ресурс звука нужно добавить к проекту, а затем настроить его свойства так, чтобы компилятор поместил его в сборку компонента.
-
В панели Solution Explorer выделите узел проекта UserControls и командой Add/Add Existing Item контекстного меню загрузите файл Trumpet1.wav в каталог проекта из прилагаемого к работе каталога Source
-
Через команду Properties контекстного меню, вызванного в панели Solution Explorer для файла Trumpet1.wav, установите в таблице свойств Properties поле Build Action в значение Embedded Resource (назначить внедренным ресурсом)
Теперь звук Trumpet1.wav на этапе компиляции будет внедрен в исполнимую сборку и готовое приложение может далее выполняться отдельно от первоисточника звука. Так удобно поступать с файлами небольших размеров. Для загрузки звука из ресурса нужно указывать полный путь к ресурсу, включая пространство имен проекта.
Четвертый звук: Специальных подготовительных действий не требует, поскольку извлекается из библиотеки .NET Framework.
-
Откомпилируйте проект с компонентами, выполнив команду Rebuild контекстного меню узла UserControls в панели Solution Explorer
-
Запустите проводник Windows Explorer и убедитесь, что размер сборки UserControls существенно увеличился за счет внедренного звука Trumpet1.wav.
Тестирование компонента SoundButtonBox
-
Добавьте к решению командой File/Add/New Project новый проект типа оконного приложения ( Windows Application ) с именем SoundButtonsTest и назначьте его стартовым командой Project/Set as StartUp Project меню оболочки (или аналогичной командой контекстного меню) -
Поместите на форму из панели Toolbox экземпляр компонента SoundButtonBox и выровняйте его по размеру формы -
Подключите динамики, запустите приложение и испытайте его работу
Отметьте, что разные исполнимые сборки используют одну и ту же библиотеку компонентов UserControls.dll при условии, что эта библиотека находится в том же каталоге, что и исполнимая сборка. При добавлении к нашему решению MySolution, содержащему проект библиотеки компонентов UserControls, нового проекта SoundButtonsTest исполнимого приложения оболочка автоматически копирует эту библиотеку в каталог, где будет находиться исполнимая сборка. При любом изменении библиотеки компонентов при ее компиляции оболочка обновляет файл библиотеки во всех каталогах, где находятся файлы исполнимых сборок.