Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π—Π«Πš ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― Π‘# 2005 И ΠŸΠ›ΠΠ’Π€ΠžΠ ΠœΠ .NET 2.0. 3-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 176

Автор Π­Π½Π΄Ρ€ΡŽ ВроСлсСн

  this.newToolStripButton, this.openToolStripButton,

  this.saveToolStripButton, this.printToolStripButton,

  this.toolStripSeparator, this.cutToolStripButton,

  this.copyToolStripButton, this.pasteToolStripButton,

  this.toolStripSeparator, this.helpToolStripButton });

 β€¦

}

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ToolStrip, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ

Windows Forms создаСтся Ρ‚ΠΈΠΏ ToolStrip, содСрТащий Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ToolStripButton (с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ toolStripButtonGrowFont ΠΈ toolStripButtonShrinkFont), Ρ‚ΠΈΠΏ ToolBarSeparator ΠΈ Ρ‚ΠΈΠΏ ToolBarTextBox (с ΠΈΠΌΠ΅Π½Π΅ΠΌ toolStripTextBoxMessage).

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ввСсти сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² ΠΎΠΊΠ½Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ToolBarTextBox, Π° Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ToolBarButton ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π°. На рис. 19.21 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ с Π²Π°ΠΌΠΈ собираСмся ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ.

Рис. 19.21. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ToolStripApp Π² дСйствии

Π― надСюсь, Ρ‡Ρ‚ΠΎ ΠΊ этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ достаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ проСктирования Ρ„ΠΎΡ€ΠΌΡ‹ Π² Visual Studio 2005, поэтому я Π½Π΅ Π±ΡƒΠ΄Ρƒ ΡƒΡ‚ΠΎΠΌΠ»ΡΡ‚ΡŒ вас указаниями ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ построСния ToolStrip. Однако слСдуСт Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ToolStripButton ΠΈΠΌΠ΅Π΅Ρ‚ свою ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ (хотя ΠΈ достаточно ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΡƒΡŽ) ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±Ρ‹Π»Π° создана с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Visual Studio 2005. Если Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» изобраТСния для своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Projectβ†’Add New Item ΠΈΠ· мСню, Π° Π·Π°Ρ‚Π΅ΠΌ Π² появившСмся Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Icon File (Π€Π°ΠΉΠ» ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), рис. 19.22.

Рис. 19.22. Вставка Π½ΠΎΠ²Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

ПослС этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΊΠ½Π° Colors ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° инструмСнтов Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ИмСя ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΈΡ… с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ToolStripButton с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства Image Π² ΠΎΠΊΠ½Π΅ свойств. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ сочтСтС внСшний Π²ΠΈΠ΄ ToolStrip ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ событиС Click для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ToolStripButton.

Π’ΠΎΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° InitializeComponent() для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ToolStripButton (Π²Ρ‚ΠΎΡ€ΠΎΠΉ ToolStripButton выглядит ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅).

private void InitializeComponent() {

 β€¦

 //

 // toolStripButtonGrowFont

 //

 this.toolStripButtonGrowFont.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;

 this.toolStripButtonGrowFont.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonGrowFont.Image")));

 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.

Рис. 19.23. Π‘Ρ‚Ρ‹ΠΊΠΎΠ²ΠΊΠ° ToolStripContainer ΠΊΠΎ всСй Ρ„ΠΎΡ€ΠΌΠ΅

Запустив эту ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ прилоТСния, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ToolStrip ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈ ΡΡ‚Ρ‹ΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ любой сторонС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Однако вашС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ сообщСниС исчСзнСт. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏΡ‹ ToolStripContainer ΡΠ²Π»ΡΡŽΡ‚ΡΡ для Ρ„ΠΎΡ€ΠΌΡ‹ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ элСмСнтами управлСния. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ графичСскоС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° самом Π΄Π΅Π»Π΅ выполняСтся, Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ скрыт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСйчас Π½Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ всю ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ событиС Paint для ToolStripContainer, Π° Π½Π΅ для Ρ„ΠΎΡ€ΠΌΡ‹. Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ событиС Paint Ρ„ΠΎΡ€ΠΌΡ‹ Π² ΠΎΠΊΠ½Π΅ свойств ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий. Из контСкстного мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Reset (рис. 19.24).

Π­Ρ‚ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ события ΠΈΠ· InitializeComponent(), Π½ΠΎ оставит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ события Π½Π° своСм мСстС (просто, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π±Π΅Π·Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ событиС Paint для ToolStripContainer ΠΈ пСрСмСститС ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ отобраТСния ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события Paint Ρ„ΠΎΡ€ΠΌΡ‹ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Paint ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. ПослС этого ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ (Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ пустой) ΠΌΠ΅Ρ‚ΠΎΠ΄ MainWindow_Paint().

Рис. 19.24. ΠŸΠ΅Ρ€Π΅ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° события

НаконСц, Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Invalidate() Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Invalidate() ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ этому модификация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

public partial class MainWindow: Form {

 β€¦

 void toolStripTextBoxMessage_LostFocus(object sender, EventArgs e) {

  toolStripContainer1.Invalidate(true);

 }

 private void toolStripButtonShrinkFont_Click(object sender, EventArgs e) {

  …

  toolStripContainer1.Invalidate(true);

 }

 private void toolStripButtonGrowFont_Click(object sender, EventArgs e) {

  toolStripContainer1.Invalidate(true);

 }

 // Π’Π΅ΠΏΠ΅Ρ€ΡŒ "Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ" ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π° Π½Π΅ Ρ„ΠΎΡ€ΠΌΠ°!

 private void ContentPanel_Paint(object sender, PaintEventArgs e) {

  Graphics g = e.Graphics;

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

 }

}

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ToolStripContainer, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ всС это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ .NET Framework 2.0 SDK Π²Π°ΠΌ придСтся ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. На рис. 19.25 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΎΠΊΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ToolStripApp Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ Π³Π»Π°Π²Π΅ 19.

Рис. 19.25. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ToolStripApp с Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΌ стыковку ToolStrip

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ MDI-прилоТСния

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ знакомство с Windows Forms, Π΄Π°Π²Π°ΠΉΡ‚Π΅ обсудим Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² качСствС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для любого числа Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΎΠΊΠΎΠ½ (Ρ‚.Π΅. Π² качСствС MDI-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°). MDI-прилоТСния Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ мноТСство Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΎΠΊΠΎΠ½ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Π’ ΠΌΠΈΡ€Π΅ MDI ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ прСдставляСт свой "Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚" прилоТСния. НапримСр, Visual Studio 2005 являСтся МDI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ мноТСство Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ экзСмпляра этого прилоТСния.

ΠŸΡ€ΠΈ построСнии МDI-прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Windows Forms ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ оказываСтся (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅) созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния Windows. Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТит систСму мСню, которая позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, содСрТит ΠΏΡƒΠ½ΠΊΡ‚ Π€Π°ΠΉΠ»β†’Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ) ΠΈ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΎΠΊΠ½Π° (каскадом, ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ).