|
Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Опубликован: 25.03.2010 | Уровень: для всех | Доступ: платный
Лекция 16:
Динамическая компоновка формы
Запускающий код приложения
И наконец, последним разрабатываем код запускающего файла Program.cs для тестирования самопального диалога и сравнения его со стандартным диалогом
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Test
{
// Форма приложения
class MyClass : Form
{
public MyClass()
{
this.Text = "Самодельный диалог шрифта";
// Подстраиваем под ширину заголовка
this.Width = this.Text.Length * this.Font.Height;
this.ResizeRedraw = true;// Перерисовывать при изменении размеров
this.ForeColor = Color.Red;// Писать красным
this.Menu = new MainMenu();// Создать линейку для заголовков меню
this.Menu.MenuItems.Add("Формат");// Добавить нулевой заголовок
// Добавить в нулевой заголовок опции и общий обработчик
this.Menu.MenuItems[0].MenuItems.Add
("Стандартный диалог...", OnStdFont);
this.Menu.MenuItems[0].MenuItems.Add("Самодельный диалог...",
OnNewFont);
Panel palelMenu = new Panel();// Создать панель для красоты
palelMenu.BorderStyle = BorderStyle.Fixed3D;// Рельефная
palelMenu.Dock = DockStyle.Top;// Причалить вверх
palelMenu.Height = 4;// Минимально отображаемая высота
palelMenu.Parent = this;// Привязать к форме
}
// Обработка стандартного диалога
void OnStdFont(object sender, EventArgs args)
{
// Создаем окно
FontDialog dlg = new FontDialog();
// Настраиваем окно
dlg.Font = this.Font;
dlg.Color = this.ForeColor;
dlg.ShowColor = true;
// Отдаем окно для управления пользователю
if (dlg.ShowDialog() == DialogResult.OK)
{
// Применяем выбор пользователя к форме
this.Font = dlg.Font;
this.ForeColor = dlg.Color;
style = "";// Нечего присвоить из стандартного диалога
// Обновляем вызывающую форму, при этом выводим параметры шрифта
this.Invalidate();
}
}
string style = null;// Поле для хранения значения стиля
// "Начертание:" для видимости в обработчиках
// Обработка самодельного диалога
void OnNewFont(object sender, EventArgs args)
{
// Создаем окно
NewFontDialog dlg = new NewFontDialog();
// Настраиваем окно
dlg.Font = this.Font;
dlg.Color = this.ForeColor;
dlg.ShowColor = true;
// Отдаем окно для управления пользователю
if (dlg.ShowDialog() == DialogResult.OK)
{
// Применяем выбор пользователя к форме
this.Font = dlg.Font;
this.ForeColor = dlg.Color;
style = dlg.StyleNameRus;
// Обновляем вызывающую форму, при этом выводим параметры шрифта
this.Invalidate();
}
}
// Рисуем на форме параметры шрифта
protected override void OnPaint(PaintEventArgs e)
{
Graphics gr = e.Graphics;
// Формируем содержимое выводимого текста
string message = "Текущие параметры шрифта\n" +
Environment.NewLine;
message += "Шрифт: " + this.Font.Name +
Environment.NewLine;
message += "Цвет: " + this.ForeColor.Name +
Environment.NewLine;
// Добавим русское название стиля из нашего диалога
if (style != null && style.Length > 0)
message += "Начертание: " + style +
Environment.NewLine;
message += "Размер: " + this.Font.SizeInPoints.ToString();
// Добавляем дополнительный стиль, если есть
bool flag = (this.Font.Style & FontStyle.Strikeout) != 0 ||
(this.Font.Style & FontStyle.Underline) != 0;
if (flag)
message += Environment.NewLine;
if ((this.Font.Style & FontStyle.Strikeout) != 0)
message += "Зачеркнутый ";
if ((this.Font.Style & FontStyle.Underline) != 0)
message += " Подчеркнутый";
// Объект форматирования текстового блока
StringFormat strFormat = new StringFormat();
strFormat.LineAlignment = strFormat.Alignment =
StringAlignment.Center;
// Рисуем текст новыми параметрами,
// установленными в обработчиках
gr.DrawString(message, this.Font,
new SolidBrush(this.ForeColor),
this.ClientRectangle, strFormat);
}
}
// Запуск
class Program
{
static void Main()
{
Application.EnableVisualStyles();
// Создали форму и передали ее в цикл сообщений Windows
Application.Run(new MyClass());
}
}
}
Листинг
16.18 .
Код тестирующего файла Program.cs
Вот результат работы кода
Испытав работу нашего самодельного диалогового окна, мы можем убедиться, что оно ничем не отличается от библиотечного диалога. Для чего делали? А чтобы программистские мускулы нарастить!
