// ΠΡΠ±ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ°ΡΠΈΠ½Ρ.
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