Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 476

Эндрю Троелсен

 this.toolStripButtonGrowFont.ImageTransparentColor = System.Drawing.Color.Magenta;

 this.toolStripButtonGrowFont.Name = "toolStripButtonGrowFont";

 this.toolStripButtonGrowFont.Text = "toolStripButton2";

 this.toolStripButtonGrowFont.ToolTipText = "Увеличить шрифт";

 this.toolStripButton.GrowFont.Click += new System.EventHandler(this.toolStripButtonGrowFont_Click);

 …

}

Замечание. Обратите внимание на то, что значение, присваиваемое свойству Image типа ToolStripButton, получается с помощью метода GetObject(). Как будет показано в следующей главе, этот метод используется для извлечения встроенных ресурсов, используемых компоновочным блоком.

Остальной программный код чрезвычайно прост. В следующем обновленном MainWindow обратите внимание на то, что текущий размер шрифта ограничивается значениями из диапазона между 12 и 70.

public partial class MainWindow: Form {

 // Текущий, минимальный и максимальный размеры шрифта.

 int currFontSize = 12;

 const int MinFontSize =12;

 const int MaxFonfSize = 70;

 publiс MainWindow() {

  InitializeComponent();

  CenterToScreen();

  Text = string.Format("Выбранный вами размер шрифта: {0}", currFontSize);

 }

 private void toolStripButtonShrinkFont_Click(object sender, EventArgs e) {

  // Уменьшение размера шрифта на 5 и обновление экрана.

  currFontSize -= 5;

  if (currFontSize ‹= MinFontSize) currFontSize = MinFontSize;

  Text = string.Format("Выбранный вами размер шрифта: {0}", currFontSize);

  Invalidate();

 }

 private void toolStripButtonGrowFont_Click(object sender, EventArgs e) {

  // Увеличение размера шрифта на 5 и обновление экрана.

  currFontSize += 5;

  if (currFontSize ›= MaxFontSize) currFontSize = MaxFontSize;

  Text = string.Format("Выбранный вами размер шрифта: {0}", currFontSize);

  Invalidate();

 }

 private void MainWindow_Paint(object sender, PaintEventArgs e) {

  // Отображение сообщения пользователя.

  Graphics g = e.Graphics;

  g.DrawString(toolStripTextBoxMessage.Text, new Font("Times New Roman", currFontSize), Brushes.Black, 10, 60);

 }

}

В качестве заключительного штриха, чтобы гарантировать, что пользовательское сообщение будет обновлено, как только ToolStripTextBox утратит фокус, обработайте событие LostFocus и вызовите Invalidate() для формы в рамках сгенерированного обработчика события.

public partial class MainWindow: Form {

 …

 public MainWindow() {

  …

  this.toolStripTextBoxMessage.LostFocus += new EventHandler(toolStripTextBoxMessage_LostFocus);

 }

 void toolStripTextBoxMessage_LostFocus(object sender, EventArgs e) {

  Invalidate();

 }

 …

}

Работа с ToolStripContainer

Типы ToolStrip, если требуется, можно настроить так, чтобы они могли "стыковаться" с любой стороной и даже со всеми сторонами содержащей их формы. Для иллюстрации того, как это сделать, щелкните правой кнопкой мыши на своем элементе ToolStrip в окне проектирования фирмы и выберите Embed In ToolStripContainer (Встроить в контейнер). После этого ToolStrip будет помещен В ToolStripContainer. Для нашего примера выберите опцию Dock Fill In Form (Стыковка ко всей форме) риc. 10.23.