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

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

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

// Π’Ρ‹Π±ΠΎΡ€ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

public string PetName {

 get { return carPetName; }

 set {

  CarPetName = value;

  Invalidate();

 }

}

Π”Π°Π»Π΅Π΅, Ρƒ нас Π΅ΡΡ‚ΡŒ свойство Speed. Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ простому измСнСнию Ρ‡Π»Π΅Π½Π° currSp, свойство Speed – это элСмСнт, "ΡΡ‚ΠΈΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ" Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий AboutToBlow ΠΈ BlewUp, Π² зависимости ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ скорости CarControl. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ программная Π»ΠΎΠ³ΠΈΠΊΠ°.

// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° currSp ΠΈ currMaxFrame ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий.

public int Speed {

 get { return currSp; }

 set {

  // Π’ ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… бСзопасной скорости?

  if (currSp β€Ή= maxSp) {

   currSp = value;

   currMaxFrame = AnimFrames.Lemon3;

  }

  // Π’Π±Π»ΠΈΠ·ΠΈ взрывоопасной ситуации?

  if ((maxSp – currSp) β€Ή= 10) {

   if (AboutToBlow != null) {

    AboutToBlow("Π§ΡƒΡ‚ΡŒ ΠΏΠΎΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΠΏΠ°Ρ€Π΅Π½ΡŒ!");

    currMaxFrame = AnimFrames.AboutToBlow;

   }

  }

  // ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅ΠΌ?

  if (currSp β€Ί= maxSp) {

   currSp = maxSp;

   if (BlewUp != null) {

    BlewUp("М-да… Ρ‚Π΅Π±Π΅ ΠΊΡ€Ρ‹ΡˆΠΊΠ°β€¦ ");

    currMaxFrame = AnimFrames.EngineBlown;

   }

  }

 }

}

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ссли тСкущая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ становится лишь Π½Π° 10 ΠΊΠΌ/Ρ‡ Π½ΠΈΠΆΠ΅ максимальной допустимой скорости, Π²Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ событиС AboutToBlow ΠΈ сдвигаСтС Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π» Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ AnimFrames.AboutToBlow. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ возмоТности вашСго автомобиля, Π²Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ событиС BlewUp ΠΈ сдвигаСтС Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² ΠΊ AnimFrames.EngineBlown. Если ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π½ΠΈΠΆΠ΅ максимальной, Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π» Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² остаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ AnimFrames.Lemon3.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ являСтся обСспСчСниС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Timer смСстит Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ„Ρ€Π΅ΠΉΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… PictureBox. Π‘Π½ΠΎΠ²Π° Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ число Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Π² Ρ†ΠΈΠΊΠ»Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ зависит ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ скорости автомобиля. ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² PictureBox Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° свойство Animate Ρ€Π°Π²Π½ΠΎ true (истина). НачнитС с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ события Tick для Ρ‚ΠΈΠΏΠ° Timer, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

private void imageTimer_Tick(object sender, EventArgs s) {

 if (IsAnim) currentImage.Image = carImages.Images[(int)currFrame];

 // Π‘Π΄Π²ΠΈΠ³ Ρ„Ρ€Π΅ΠΉΠΌΠ°.

 int nextFrame = ((int)currFrame) + 1;

 currFrame = (AnimFrames)nextFrame;

 if (currFrame β€Ί currMaxFrame) currFrame = AnimFrames.Lemon1;

}

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ названия

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ созданиС элСмСнта управлСния, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ автомобиля. Для этого ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ событиС Paint для CarControl ΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° этого события ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ PetName вашСго CarControl Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ области ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

private void CarControl_Paint(object sender, PaintEventArgs e) {

 // ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ названия Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅.

 Graphics g = e.Graphics;

 g.FillRectangle(Brushes.GreenYellow, bottomRect);

 g.DrawString(PetName, new Font("Times New Roman", 15), Brushes.Black, bottomRect);

}

На этом Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ этап построСния CarControl Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ВСстированиС Ρ‚ΠΈΠΏΠ° CarControl

ΠŸΡ€ΠΈ запускС ΠΈΠ»ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Windows Control Library Π² Visual Studio 2005 ΠΈcΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ UserControl Test Container (ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния). Π­Ρ‚ΠΎ управляСмый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΆΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ ActiveX Control Test Container (ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ элСмСнтов управлСния ActiveX). Π­Ρ‚ΠΎΡ‚ инструмСнт автоматичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ваш элСмСнт управлСния Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ стСнда Ρ€Π΅ΠΆΠΈΠΌΠ° проСктирования. Как ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ рис. 21.29, этот инструмСнт позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ любого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ свойства (ΠΊΠ°ΠΊ ΠΈ любого наслСдуСмого).

Рис. 21.29. ВСстированиС CarControl Π² ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅

Установив для свойства Animate Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true (истина), Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ†ΠΈΠΊΠ» Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ CarControl с использованиСм ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ‚Ρ€Π΅Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² *.bmp. Однако с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ тСстирования Π²Ρ‹ Π½Π΅ смоТСтС ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ события. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ вашСго элСмСнта интСрфСйса, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ для CarControl

Как ΠΈ Π² случаС любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ .NET-Ρ‚ΠΈΠΏΠ°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свой элСмСнт управлСния Π² Ρ€Π°ΠΌΠΊΠ°Ρ… любого языка, совмСстимого со срСдой CLR. Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ пространство ΠΈ создайтС Π½ΠΎΠ²Ρ‹ΠΉ C#-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Windows Application с ΠΈΠΌΠ΅Π½Π΅ΠΌ CarControlTestForm. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ элСмСнты управлСния ΠΈΠ· Visual Studio 2005, Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π² любом мСстС ΠΎΠΊΠ½Π° Toolbox ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ мСню Choose Item (Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ элСмСнт). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ½ΠΎΠΏΠΊΡƒ Browse (ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€) Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ .NET Framework Components (ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ .NET), ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ своСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ CarControlLibrary.dll. ПослС Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ OK Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Π² ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов Π½ΠΎΠ²ΡƒΡŽ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, CarControl.

ПослС этого помСститС Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт CarControl Π² ΠΎΠΊΠ½ΠΎ проСктирования Ρ„ΠΎΡ€ΠΌΡ‹. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом свойства Animate, PetName ΠΈ Speed Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² ΠΎΠΊΠ½Π΅ свойств. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² случаС ΠΈΡΠΏΡ‹Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ваш элСмСнт управлСния "ΠΆΠΈΠ²Π΅Ρ‚ своСй Тизнью" Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ проСктирования. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ установитС для свойства Animate Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ автомобиля Π² ΠΎΠΊΠ½Π΅ проСктирования Ρ„ΠΎΡ€ΠΌΡ‹.

Π‘ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС CarControl, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты графичСского интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дозволят ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ автомобиля, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ автомобиля ΠΈ строковыС Π΄Π°Π½Π½Ρ‹Π΅, посылаСмыС Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ событиями (для этого Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ элСмСнты управлСния Label). Один ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 21.30.

Рис. 21.30. ГрафичСский интСрфСйс ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

Π’ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ создали графичСский ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π½Π° рисункС, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… вашСго Ρ‚ΠΈΠΏΠ° Form Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ простым (здСсь я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· событий CarControl с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΊΠ½Π° свойств).

public partial class MainForm: Form {

 public MainForm() {

  InitializeComponent();

  lblCurrentitSpeed.Text = string.Format("ВСкущая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ: {0}", this.myCarControl.Speed.ToString());

  numericUpDownCarSpeed.Value = myCarControl1.Speed;

 }

 private void numericUpDownCarSpeed_ValueChanged(object sender, EventArgs e) {

  // ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ NumericUpDown Ρ€Π°Π²Π΅Π½ 0,

  // Π° максимум - 300.

  this.myCarControl.Speed = (int)numericUpDownCarSpeed.Value;

  lblCurrentSpeed.Text = string.Format("ВСкущая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ: {0}", this.myCarControl.Speed.ToString());

 }

 private void myCarControl_AboutToBlow(string msg) {

  lblEventData.Text = string.Format("Π”Π°Π½Π½Ρ‹Π΅ события: {0}", msg);

 }

 private void myCarControl_BlewUp(string msg) {

  lblEventData.Text = string.Format("Π”Π°Π½Π½Ρ‹Π΅ событий: {0}", msg);

 }

}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ взаимодСйствиС с CarControl. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π·Π°Π΄Π°Ρ‡Π° построСния ΠΈ использования ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… элСмСнтов управлСния оказываСтся достаточно простой, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ достаточныС знания ΠΎΠ± ООП, систСмС Ρ‚ΠΈΠΏΠΎΠ² .NET, GDI+ (Ρ‚.Π΅. ΠΎ System.Drawing.dll) ΠΈ Windows Forms.

Π’Ρ‹ сСйчас ΠΈΠΌΠ΅Π΅Ρ‚Π΅ достаточно ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ исслСдованиС процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ элСмСнтов управлСния Windows Π² .NET, Π½ΠΎ здСсь слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ аспСкт: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Ρ€Π΅ΠΆΠΈΠΌΠ° проСктирования. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ описаниС упомянутой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΌΡ‹ с Π²Π°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ Ρ€ΠΎΠ»ΡŒ пространства ΠΈΠΌΠ΅Π½ System.ComponentModel.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ System.ComponentModel

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ System.ComponentModel опрСдСляСт Ρ†Π΅Π»Ρ‹ΠΉ ряд Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² (ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ вСсти сСбя ваши элСмСнты управлСния Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ проСктирования. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ тСкстовоС описаниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ свойства, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ событиС, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈΠ»ΠΈ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ряд свойств ΠΈΠ»ΠΈ событий Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΈΡΡŒ вмСстС Π² ΠΎΠΊΠ½Π΅ свойств Visual Studio 2005. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π». 21.12.

Π’Π°Π±Π»ΠΈΡ†Π° 21.12. ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° Ρ‡Π»Π΅Π½ΠΎΠ² System.ComponentModel

Атрибут ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ примСнСния ОписаниС BrowsableAttribute Бвойства ΠΈ события Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈ свойство ΠΈΠ»ΠΈ событиС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΎΠΊΠ½Π΅ обозрСватСля свойств. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ свойства ΠΈ события CategoryAttribute Бвойства ΠΈ события Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ относится Π΄Π°Π½Π½ΠΎΠ΅ свойство ΠΈΠ»ΠΈ событиС DescriptionAttribute Бвойства ΠΈ события ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ нСбольшой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ тСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π²Π½ΠΈΠ·Ρƒ ΠΎΠΊΠ½Π° свойств, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π΄Π°Π½Π½ΠΎΠ΅ свойство ΠΈΠ»ΠΈ событиС DefaultPropertyAttribute Бвойства Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ свойство, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΎ свойство выбираСтся Π² ΠΎΠΊΠ½Π΅ свойств, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт управлСния DefaultValueAttribute Бвойства ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ свойства, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΡ€ΠΈ "пСрСустановкС" Π΄Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта управлСния Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ DefaultEventAttribute Бобытия Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ событиС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Когда программист выполняСт Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π½Π° элСмСнтС управлСния, автоматичСски гСнСрируСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ для события, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° проСктирования CarControl