Создаем приложение «Работа со шрифтами» (FontChng) Задание: Реализовать windows-приложение FontChng следующего вида: Знакомимся со стандартными диалогами и создаем контестное меню! 1. Познакомьтесь с приложением FontChng.exe. Обратите внимание на всплывающую подсказку и воспользуйтесь контекстным меню. 2. Познакомьтесь по MSDN с элементами Панели элементов: FontDialog, ColorDialog, ContextMenuStrip. 3. Попробуйте, используя эти элементы, хотя бы частично создать приложение, аналогичное приложению FontChng.exe. Решение задания 1. Необходимые пространства имен: using System; using System.Drawing; using System.Windows.Forms; ========================= 2. Будем считать, что наша главная форма имеет имя Form1, на ней уже размещены поля и объекты, определенные заданием, тогда помещаем на эту форму из «Панель элементов» элементы FontDialog, ColorDialog, ContextMenuStrip, ToolTip и получаем объекты, соответственно: fontDialog1, colorDialog1, toolTip1, contextMenuStrip1. 3. На возникшей форме контекстного меню создаем необходимые нам пункты, как на рисунке: 4. Далее выделяем форму Form1 и делаем по ней 2-й щелчок мышью и создаем: private void Form1_Load(object sender, EventArgs e){ // Пользователь может использовать диалоговое окно для // определения собственных цветов. colorDialog1.AllowFullOpen = true; // Выделять в диалоге заданный до выбора цвет colorDialog1.Color = label1.ForeColor; } 5. Пусть label1 – поле типа Label в центре нашей Form1, а button2 – кнопка с надписью «Определить шрифт» (согласно заданию), тогда: а) после двойного щелчка по кнопке button2 создаем: private void button2_Click(object sender, EventArgs e) { fontDialog1.ShowColor = true; if (fontDialog1.ShowDialog() != DialogResult.Cancel){ label1.Font = fontDialog1.Font; label1.ForeColor = fontDialog1.Color; button2.Font = fontDialog1.Font; button2.ForeColor = fontDialog1.Color; } } б) после двойного щелчка по пункту меню «Изменить цвет шрифта»: private void toolStripMenuItem1_Click(object sender, EventArgs e){ // Update the text box color if the user clicks OK if (colorDialog1.ShowDialog() == DialogResult.OK) label1.ForeColor = colorDialog1.Color; } в) так обрабатывается пункт «Увеличить размер шрифта» и аналогичным образом и следующий пункт контекстного меню: private void toolStripMenuItem2_Click(object sender, EventArgs e){ Font font = new Font( label1.Font.FontFamily, label1.Font.Size+5, label1.Font.Style, label1.Font.Unit ); label1.Font = font; } г) для обработки пункта «Изменить текст» (здесь Form2 –новая форма для задания нового текста) (см. код ниже): private Form2 frm2 = new Form2(); private void toolStripMenuItem4_Click(object sender, EventArgs e){ if (frm2.ShowDialog() != DialogResult.Cancel){ label1.Text = frm2.textBox1.Text; } } д) всплывающая подсказка: private void contextMenuStrip1_MouseLeave(object sender, EventArgs e){ toolTip1.SetToolTip(this.label1, "Используйте контекстное меню"); } 6. Код файла с Form2: using System; using System.Windows.Forms; namespace FontChng { public partial class Form2 : Form { public Form2(){ InitializeComponent(); } private void button1_Click(object sender, EventArgs e){ DialogResult = DialogResult.Cancel; } private void button2_Click(object sender, EventArgs e){ DialogResult = DialogResult.OK; } } }