Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 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.