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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ КПК ΠΈ смартфонов Π½Π° .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 8

Автор АлСксандр Климов

РассматриваСмыС элСмСнты управлСния Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π° Ρ„ΠΎΡ€ΠΌΡ‹ рядом с элСмСнтом MainMenu. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ элСмСнтами ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π½Π°Π΄ΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ свойствС Filter, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ список доступных Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡ ΠΈΡ… ΠΏΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ. Бвойство InitalDirectory содСрТит имя ΠΏΠ°ΠΏΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹. Если это свойство ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ пустым, Ρ‚ΠΎ ΠΎΠ±Π·ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ² начнСтся с самой ΠΏΠ°ΠΏΠΊΠΈ My Documents.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ для этих элСмСнтов являСтся ShowDialog. ПослС Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π½Π° экранС отобраТаСтся модальноС ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ OK ΠΈΠ»ΠΈ Cancel. ΠŸΡ€ΠΈ этом ΠΌΠ΅Ρ‚ΠΎΠ΄ ShowDialog Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния DialogResult.OK ΠΈ DialogResult.Cancel соотвСтствСнно. Если ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ DialogResult.OK, Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ OK ΠΈ Π² свойствС Filename содСрТится ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСмСнтами OpenFileDialog ΠΈ SaveFileDialog ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 3.14.

Листинг 3.14

private void butOpen_Click(object sender, EventArgs e) {

 ofd.Filter = "DLL|*.dll|ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ|*.jpg";

 ofd.InitialDirectory = "\\My Documents\\Templates";

 if (DialogResult.OK == ofd.ShowDialog()) {

  statusBar1.Text = ofd.FileName;

 } else {

  statusBar1.Text = "Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠžΡ‚ΠΌΠ΅Π½Π°!";

 }

}

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ HScrollBar ΠΈ VScrollBar

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ управлСния HScrollBar ΠΈ VScrollBar ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ полосы ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ для элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этими полосами ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ совсСм Π½Π΅ слоТно. Бвойство Minimum Π·Π°Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ находится Π² ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ Π»Π΅Π²ΠΎΠΉ ΠΈΠ»ΠΈ Π² ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, для HScrollBar ΠΈΠ»ΠΈ VScrollBar соотвСтствСнно. Бвойство Maximum, Π·Π°Π΄Π°Π΅Ρ‚ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для полос ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Value зависит ΠΎΡ‚ полоТСния ΠΏΠΎΠ»Π·ΡƒΠ½ΠΊΠ°. Оно всСгда находится Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ значСниями свойств Minimum ΠΈ Maximum.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚ Π½Π° полосС ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ, Ρ‚ΠΎ свойство Value измСняСтся Π² соотвСтствии со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π² свойствС LargeChange. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ со стрСлкой, Ρ‚ΠΎ свойство Value измСняСтся Π² соотвСтствии со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π² свойствС SmallChange. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ссли ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ находится Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, опрСдСляСмом свойством Maximum, Ρ‚ΠΎ свойство Value Π½Π΅ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Maximum. Π’ этом случаС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Value вычисляСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ Maximum - LargeChange + 1.

ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ свойства Value инициируСтся событиС ValueChanged. Π’ листингС 3.15 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с полосами ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ.

Листинг 3.15

private void vScrollBar1_ValueChanged(object sender, EventArgs e) {

 this.lblScroll.Text = this.vScrollBar1.Value.ToString();

}

На рис. 3.10 ΠΏΠΎΠΊΠ°Π·Π°Π½ внСшний Π²ΠΈΠ΄ прилоТСния. Если ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ Π² ниТнюю Ρ‡Π°ΡΡ‚ΡŒ полосы ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² соотвСтствии с Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 91.

Рис. 3.10. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с полосами ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ


Бписок рисунков (ImageList)

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ управлСния ImageList ΡƒΠΆΠ΅ рассматривался ΠΏΡ€ΠΈ знакомствС с элСмСнтом ToolBar. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ImageList ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Как ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты, список рисунков Π½Π΅ отобраТаСтся Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ изобраТСния. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ совмСстно с Ρ‚Π°ΠΊΠΈΠΌΠΈ элСмСнтами управлСния, ΠΊΠ°ΠΊ ListView, TreeView ΠΈ ToolBar.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² элСмСнт управлСния Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Add, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав Ρ‡Π»Π΅Π½Π° класса Images. Π‘Π°ΠΌΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, Ρ‚Π°ΠΊ ΠΈ Π² рСсурсах прилоТСния. Π’ листингС 3.16 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΈΠ· рСсурсов Π² ImageList, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΅Π΅ Π² элСмСнтС интСрфСйса PictureBox.

Листинг 3.16

Bitmap image = new Bitmap(Assembly.GetExecutingAssembly(),

 GetManifestResourceStream(@"ImageList_CS.home.gif"));

imgList.Images.Add(image);

picTest.Image = imgList.Images[0];

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ добавляСтся Π² Π½Π°Ρ‡Π°Π»ΠΎ списка, ΠΈ Π΅Π³ΠΎ порядковый Π½ΠΎΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ. Если Π² ImageList ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ новая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ порядковый Π½ΠΎΠΌΠ΅Ρ€, Ρ€Π°Π²Π½Ρ‹ΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅. Π­Ρ‚ΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ листингом 3.17.

Листинг 3.17

private void butFromImageListClick(object sender, EventArgs e) {

 picTest.Image = imgList.Images[1];

}

ВсС ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, находящиСся Π² ImageList, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€ 16Γ—16 пиксСлов. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свойство ImageSize. Если ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ. Для этого достаточно список рисунков Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈΡ… Π² графичСском ΠΏΠΎΠ»Π΅.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ PictureBox

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ управлСния PictureBox ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отобраТСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π”Π°Π½Π½Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅ позволяСт Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² соотвСтствии с Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ графичСского поля.

Π’ листингС 3.18 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· графичСского Ρ„Π°ΠΉΠ»Π°.

Листинг 3.18

private void butFromFile_Click(object sender, EventArgs e) {

 picTest.Image = new Bitmap(@"\Windows\banner.gif");

}

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот способ для добавлСния ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ для свойства Build Action Π² ΠΎΠΊΠ½Π΅ свойств Properties Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Content. Π’ процСссС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ прилоТСния ΠΊ инсталляции ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ рассмотрСнном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использовалась готовая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°, которая находится Π² ΠΏΠ°ΠΏΠΊΠ΅ Windows.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· рСсурсов прилоТСния. Π’ этом случаС Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ для свойства Build Action Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Embedded Resource. Π’ΠΎΠ³Π΄Π° Π½Π΅ придСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ изобраТСния Π² состав инсталлятора. Π’ листингС 3.19 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ изобраТСния ΠΈΠ· рСсурсов.

Листинг 3.19

private void butRes_Click(object sender, EventArgs e) {

 // Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΈΠ· рСсурсов

 picTest.Image = new Bitmap(Assembly.GetExecutingAssembly().

  GetManifestResourceStream("PictureBox_CS.kristina.jpg"));

}

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ImageList ΠΈΠΌΠ΅Π΅Ρ‚ свойство ImageSize, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠŸΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² графичСскоС ΠΏΠΎΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ изобраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ свойства, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС 3.20.

Листинг 3.20

private void butImgList_Click(object sender, EventArgs e) {

 // измСняСм Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ

 imageList1.ImageSize = new System.Drawing.Size(160, 120);

 // Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ

 picTest.Image = imageList1.Images[0];

}

На рис. 3.11 ΠΏΠΎΠΊΠ°Π·Π°Π½ внСшний Π²ΠΈΠ΄ прилоТСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ всС Ρ‚Ρ€ΠΈ описанных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

Рис. 3.11. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСмСнтом PictureBox

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ListView

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ управлСния ListView ΠΏΠΎΡ…ΠΎΠΆ Π½Π° элСмСнт ListBox, Π½ΠΎ вмСсто ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ тСкста Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ изобраТСния. ЀактичСски, правая Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΎΠΊΠ½Π° ΠŸΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ° Π² Windows XP являСтся Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ использования этого ΠΎΡ€Π³Π°Π½Π° управлСния. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π² ListView ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, списка, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΈ ΠΌΠ΅Π»ΠΊΠΈΡ… Π·Π½Π°Ρ‡ΠΊΠΎΠ². Π—Π° способ отобраТСния содСрТимого ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ свойство View. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Details позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ содСрТимоС Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ List создаСт список, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ LargeIcon позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ элСмСнты списка Π² Π²ΠΈΠ΄Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SmallIcon ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΡ… ΠΊΠ°ΠΊ малСнькиС ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Details элСмСнт управлСния ListView позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ столбцы. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π²ΠΎ врСмя проСктирования, Ρ‚Π°ΠΊ ΠΈ Π²ΠΎ врСмя исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ добавлСния столбцов Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 3.21.

Листинг 3.21

private void Form1_Load(object sender, EventArgs e) {

 // УстанавливаСм Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²ΠΈΠ΄

 listView1.View = View.Details;

 // ВыдСляСм всю строку ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ любого элСмСнта

 listView1.FullRowSelect = true;


 ColumnHeader columnHeader1 = new ColumnHeader();

 ColumnHeader columnHeader2 = new ColumnHeader();

 ColumnHeader columnHeader3 = new ColumnHeader();


 columnHeader1.Text = "Ѐамилия";

 columnHeader2.Text = "Имя";

 columnHeader3.Text = "E-mail";


 listView1.Columns.Add(columnHeader1);