Главная страница
Навигация по странице:

  • Рис. 8.19. Окно с изображением лисыПри щелчке по кнопке ОК

  • Васильев А.Н. Основы программирования на C#. Васильев А. Н. Программирование


    Скачать 5.54 Mb.
    НазваниеВасильев А. Н. Программирование
    АнкорВасильев А.Н. Основы программирования на C
    Дата20.09.2022
    Размер5.54 Mb.
    Формат файлаpdf
    Имя файлаVasilev_Programmirovanie-na-C-dlya-nachinayushchih-Osobennosti-y.pdf
    ТипДокументы
    #686596
    страница32 из 40
    1   ...   28   29   30   31   32   33   34   35   ...   40
    ОК. В раскрывающемся списке выбирается название животного, а в области изображения появляется соответствующая картинка. При отображении окна в списке выбран элемент Волки соответственно в окне отображается картинка с волком. Какие еще элементы есть в раскрывающемся списке, показано на рис. Рис. 8.14. В раскрывающемся списке можно выбрать элемент (название животного)
    При выборе нового элемента изменения (смена картинки) наступают автоматически. На рис. 8.15 показано окно с изображением лисы
    Приложения с графическим интерфейсом
    405
    Рис. 8.15. Диалоговое окно с изображением лисы
    Окно с изображением медведя представлено на рис. Рис. 8.16. Диалоговое окно с изображением медведя
    Наконец, окно с изображением енота показано на рис. Рис. 8.17. Диалоговое окно с изображением енота
    Если щелкнуть по кнопке ОК, то окно закроется и программа завершит выполнение. Такая вот простая программа. Ее код представлен в листинге Листинг 8.4. Раскрывающийся список System;
    using System.Drawing;
    using System.Windows.Forms;
    //
    Ʉɥɚɫɫ ɨɤɧɚ ɹɜɥɹɟɬɫɹ ɩɪɨɢɡɜɨɞɧɵɦ ɨɬ ɤɥɚɫɫɚ Form:
    class MyForm:Form{
    //
    Ɂɚɤɪɵɬɨɟ ɩɨɥɟ ɹɜɥɹɟɬɫɹ ɬɟɤɫɬɨɜɵɦ ɦɚɫɫɢɜɨɦ
    //
    ɫ ɧɚɡɜɚɧɢɹɦɢ ɠɢɜɨɬɧɵɯ:
    Глава 8
    406
    private string[] animals={
    ƎȼɨɥɤƎ,ƎɅɢɫɚƎ,ƎɆɟɞɜɟɞɶƎ,ƎȿɧɨɬƎ};
    //
    Ɂɚɤɪɵɬɨɟ ɩɨɥɟ ɹɜɥɹɟɬɫɹ ɬɟɤɫɬɨɜɵɦ ɦɚɫɫɢɜɨɦ
    //
    ɫ ɧɚɡɜɚɧɢɹɦɢ ɮɚɣɥɨɜ ɫ ɢɡɨɛɪɚɠɟɧɢɹɦɢ:
    private string[] files={
    Ǝwolf.jpgƎ,Ǝfox.jpgƎ,Ǝbear.jpgƎ,Ǝraccoon.jpgƎ};
    //
    Ɂɚɤɪɵɬɨɟ ɩɨɥɟ ɫɨɞɟɪɠɢɬ ɩɭɬɶ ɤ ɤɚɬɚɥɨɝɭ ɫ ɮɚɣɥɚɦɢ:
    private string path=
    ƎD:/Books/pictures/csharp/Ǝ;
    //
    Ɂɚɤɪɵɬɨɟ ɩɨɥɟ - ɡɧɚɱɟɧɢɟ ɢɧɞɟɤɫɚ ɞɥɹ ɜɵɛɪɚɧɧɨɝɨ
    //
    ɷɥɟɦɟɧɬɚ ɢɡ ɦɚɫɫɢɜɚ:
    private int index=0;
    //
    Ɂɚɤɪɵɬɨɟ ɩɨɥɟ — ɫɫɵɥɤɚ ɧɚ ɨɛɴɟɤɬ ɦɟɬɤɢ:
    private Label pict;
    //
    Ɂɚɤɪɵɬɨɟ ɩɨɥɟ — ɫɫɵɥɤɚ ɧɚ ɨɛɴɟɤɬ
    //
    ɪɚɫɤɪɵɜɚɸɳɟɝɨɫɹ ɫɩɢɫɤɚ:
    private ComboBox list;
    //
    Ʉɨɧɫɬɪɭɤɬɨɪ:
    public MyForm():base(){
    //
    Ɂɚɝɨɥɨɜɨɤ ɨɤɧɚ:
    this.Text=
    Ǝȼ ɦɢɪɟ ɠɢɜɨɬɧɵɯƎ;
    //
    Ɋɚɡɦɟɪɵ ɨɤɧɚ:
    this.Size=new Size(300,155);
    //
    Ɉɤɧɨ ɮɢɤɫɢɪɨɜɚɧɧɵɯ ɪɚɡɦɟɪɨɜ:
    this.FormBorderStyle=FormBorderStyle.FixedSingle;
    //
    Ɉɤɧɨ ɧɟɥɶɡɹ ɪɚɡɜɟɪɧɭɬɶ ɧɚ ɜɟɫɶ ɷɤɪɚɧ:
    this.MaximizeBox=false;
    //
    ɋɨɡɞɚɧɢɟ ɨɛɴɟɤɬɚ ɦɟɬɤɢ:
    pict=new Label();
    //
    ɉɨɥɨɠɟɧɢɟ ɢ ɪɚɡɦɟɪɵ ɦɟɬɤɢ:
    pict.SetBounds(5,5,154,104);
    //
    Ɍɢɩ ɪɚɦɤɢ ɜɨɤɪɭɝ ɦɟɬɤɢ:
    pict.BorderStyle=BorderStyle.FixedSingle;
    //
    ɂɡɨɛɪɚɠɟɧɢɟ ɞɥɹ ɦɟɬɤɢ:
    pict.Image=Image.FromFile(path+files[index]);
    Приложения с графическим интерфейсом //
    Ⱦɨɛɚɜɥɟɧɢɟ ɦɟɬɤɢ ɜ ɨɤɧɨ:
    this.Controls.Add(pict);
    //
    ɋɨɡɞɚɧɢɟ ɨɛɴɟɤɬɚ ɞɥɹ ɫɩɢɫɤɚ:
    list=new ComboBox();
    //
    ɋɨɞɟɪɠɢɦɨɟ ɫɩɢɫɤɚ:
    list.Items.AddRange(animals);
    //
    Ɍɢɩ ɫɩɢɫɤɚ:
    list.DropDownStyle=ComboBoxStyle.DropDownList;
    //
    ɂɧɞɟɤɫ ɜɵɛɪɚɧɧɨɝɨ ɜ ɫɩɢɫɤɟ ɷɥɟɦɟɧɬɚ:
    list.SelectedIndex=index;
    //
    ɉɨɥɨɠɟɧɢɟ ɫɩɢɫɤɚ:
    list.Left=pict.Right+5;
    list.Top=pict.Top;
    //
    Ɋɚɡɦɟɪɵ ɫɩɢɫɤɚ:
    list.Size=new Size(110,50);
    //
    ɒɪɢɮɬ ɞɥɹ ɫɩɢɫɤɚ:
    list.Font=new Font(
    ƎCourier NewƎ,12,FontStyle.Bold);
    //
    Ɋɟɝɢɫɬɪɚɰɢɹ ɦɟɬɨɞɚ ɨɛɪɚɛɨɬɱɢɤɨɦ ɞɥɹ ɫɨɛɵɬɢɹ,
    //
    ɫɜɹɡɚɧɧɨɝɨ ɫ ɜɵɛɨɪɨɦ ɧɨɜɨɝɨ ɷɥɟɦɟɧɬɚ ɜ ɫɩɢɫɤɟ:
    list.SelectedIndexChanged+=OnItemChanged;
    //
    Ⱦɨɛɚɜɥɟɧɢɟ ɫɩɢɫɤɚ ɜ ɨɤɧɨ:
    this.Controls.Add(list);
    //
    ɋɨɡɞɚɧɢɟ ɨɛɴɟɤɬɚ ɤɧɨɩɤɢ:
    Button btn=new Button();
    //
    ɇɚɡɜɚɧɢɟ ɤɧɨɩɤɢ:
    btn.Text=
    ƎOKƎ;
    //
    ɉɨɥɨɠɟɧɢɟ ɤɧɨɩɤɢ:
    btn.Left=list.Left;
    btn.Top=list.Bottom+10;
    //
    Ɋɚɡɦɟɪɵ ɤɧɨɩɤɢ:
    btn.Width=list.Width;
    btn.Height=30;
    Глава 8
    408
    //
    ɒɪɢɮɬ ɞɥɹ ɤɧɨɩɤɢ:
    btn.Font=list.Font;
    //
    Ɋɟɝɢɫɬɪɚɰɢɹ ɦɟɬɨɞɚ ɨɛɪɚɛɨɬɱɢɤɨɦ ɫɨɛɵɬɢɹ,
    //
    ɫɜɹɡɚɧɧɨɝɨ ɫɨ ɳɟɥɱɤɨɦ ɩɨ ɤɧɨɩɤɟ:
    btn.Click+=OnButtonClick;
    //
    Ⱦɨɛɚɜɥɟɧɢɟ ɤɧɨɩɤɢ ɜ ɨɤɧɨ:
    this.Controls.Add(btn);
    }
    //
    Ɇɟɬɨɞ ɞɥɹ ɨɛɪɚɛɨɬɤɢ ɫɨɛɵɬɢɹ, ɫɜɹɡɚɧɧɨɝɨ ɫ ɜɵɛɨɪɨɦ
    //
    ɜ ɫɩɢɫɤɟ ɧɨɜɨɝɨ ɷɥɟɦɟɧɬɚ:
    private void OnItemChanged(object obj,EventArgs ea){
    //
    ɂɧɞɟɤɫ ɜɵɛɪɚɧɧɨɝɨ ɜ ɫɩɢɫɤɟ ɷɥɟɦɟɧɬɚ:
    int index=list.SelectedIndex;
    //
    ɇɨɜɨɟ ɢɡɨɛɪɚɠɟɧɢɟ ɞɥɹ ɦɟɬɤɢ:
    pict.Image=Image.FromFile(path+files[index]);
    }
    //
    Ɇɟɬɨɞ ɞɥɹ ɨɛɪɚɛɨɬɤɢ ɫɨɛɵɬɢɹ, ɫɜɹɡɚɧɧɨɝɨ ɫɨ ɳɟɥɱɤɨɦ
    //
    ɩɨ ɤɧɨɩɤɟ:
    private void OnButtonClick(object obj,EventArgs ea){
    //
    Ɂɚɜɟɪɲɟɧɢɟ ɜɵɩɨɥɧɟɧɢɹ ɩɪɢɥɨɠɟɧɢɹ:
    Application.Exit();
    }
    }
    //
    Ƚɥɚɜɧɵɣ ɤɥɚɫɫ:
    class ComboBoxDemo{
    [STAThread]
    //
    Ƚɥɚɜɧɵɣ ɦɟɬɨɞ:
    static void Main(){
    //
    Ɉɬɨɛɪɚɠɟɧɢɟ ɨɤɧɚ:
    Application.Run(new MyForm());
    }
    }
    Приложения с графическим интерфейсом
    409
    Мы описываем класс MyForm, который является производным от класса. В классе есть закрытое поле animals, являющееся текстовым массивом с названиями животных. Элементы этого массива, как мы увидим далее, определяют содержимое раскрывающегося списка. Еще одно закрытое поле files является текстовым массивом с названиями файлов с изображениями животных. Между элементами массивов animals и files должно быть строгое взаимно-однозначное соответствие название животного в массиве animals должно иметь такой же индекс, как название файла с изображением этого животного в массиве Закрытое текстовое поле path содержит текст, определяющий путь к каталогу с файлами изображений (значение
    ƎD:/Books/pictures/
    csharp/
    Ǝ).
    q
    ПОДРОБНОСТИ bДля корректной работы программы в папку
    D:\Books\pictures\
    csharp должны быть помещены файлы с изображениями животных. В данном случае названия файлов wolf.jpg
    , fox.jpg
    , bear.jpg и raccoon.jpg
    (все файлы размером
    150
    на
    100
    пикселей). Именно эти названия указаны в массиве files
    . Если читатель планирует использовать другой каталог для хранения файлов и/или другие названия для файлов, то соответствующие изменения следует внести в программный код.
    Закрытое целочисленное поле index с нулевым значением определяет индекс элемента в раскрывающемся списке, который будет выбран при начальном отображении диалогового окна.
    Кроме этих полей, в классе MyForm есть еще несколько закрытых полей, используемых в качестве ссылок на объекты графических компонентов. Точнее, их два поле pict класса Label (ссылка на объект метки) и поле list класса ComboBox (ссылка на объект раскрывающегося списка).
    В конструкторе класса MyForm() в основном выполняются рутинные операции по настройке внешнего вида окна и его компонентов. Большинство из них уже должны быть знакомы читателю. Поэтому остановимся на наиболее важных и принципиально новых командах. Так, положение и размеры объекта метки задаются с помощью метода SetBounds(). Аргументы метода — это координаты метки и ее размеры (ширина и высота. Вокруг метки отображается рамка, тип которой определяется командой. Хотя метка
    Глава обычно называется текстовой, в данном случае она содержит изображение. Изображение, связанное сметкой, определяется командой pict.
    Image=Image.FromFile(path+files[index])
    , которой свойству
    Image объекта метки присваивается ссылка на объект, который создается вызовом статического метода FromFile() из класса Image. Аргументом методу передается текст с полным путем к файлу с изображением (в данном случае такой текст получается объединением содержимого переменной path и элемента files[index]).
    {
    i
    НАЗ А МЕТКУ Размеры метки заданы на
    4
    пикселя больше размеров изображений, отображаемых в области метки.
    Объект списка создается командой list=new ComboBox(). Чтобы заполнить список содержимым массива animals, используем команду list.Items.AddRange(animals)
    . Здесь из свойства Items объекта списка, возвращающего ссылку на коллекцию элементов списка, вызывается метод AddRange(). Аргументом методу передается ссылка на массив. В результате элементы массива добавляются в список.
    Стиль, используемый по умолчанию для списка, подразумевает, что в поле выбора выбранное значение можно редактировать. Наста- кой вариант не устраивает, поэтому мы используем команду list.
    DropDownStyle=ComboBoxStyle.DropDownList
    , которой свойству
    DropDownStyle значением присваивается константа DropDownList из перечисления ComboBoxStyle. В результате получаем раскрывающийся список без возможности редактировать выбранное значение. Присвоив значение свойству SelectedIndex (команда list.
    SelectedIndex=index
    ), определяем элемент в списке, который будет выбран по умолчанию (свойству в качестве значения присваивается индекс выбранного по умолчанию элемента).
    Положение списка в окне выбираем в соответствии с положением метки с изображением. Команда list.Left=pict.Right+5 означает, что левый край списка сдвинут на 5 пикселей по отношению к правому краю метки. По вертикали список находится на том же уровне, что и метка команда Размер списка определяется командой list.Size=new Size(110,50), то есть присваиванием значения свойству Size. Шрифт для списка
    Приложения с графическим интерфейсом
    411
    определяем командой, в которой свойству Font объекта списка list значением присваивается выражение new Font(
    ƎCourier NewƎ,
    12,FontStyle.Bold)
    (объект шрифта. Но одна команда принципиально важная. Это инструкция list.SelectedIndexChanged+=
    OnIte mChanged
    , которой в список обработчиков события
    SelectedIndexChanged объекта списка добавляется ссылка на метод) (закрытый метод класса MyForm). Событие возникает, когда в списке выбирается новый элемент. В таком случае будет вызываться метод Кнопка реализуется как объект btn класса Button. Название кнопки (текст в кнопке) определяем с помощью команды btn.Text=
    ƎOKƎ. Горизонтальная координата кнопки совпадает с левой координатой списка (команда btn.Left=list.Left). По вертикали кнопка размещена на 10 пикселей ниже нижней границы списка (команда btn.
    Top=list.Bottom+10
    ). Ширина кнопки такая же, как ширина списка команда btn.Width=list.Width). Высота кнопки равна 30 пиксе- лям (команда btn.Height=30). Шрифт для кнопки применяется такой же, как и шрифт для списка (команда btn.Font=list.Font). Для обработки события, связанного со щелчком по кнопке, регистрируется закрытый метод OnButtonClick() класса MyForm.
    {
    i
    НАЗ А МЕТКУ Для добавления компонентов в окно используется метод
    Add()
    . Аргументом методу передается ссылка на объект компонента. Метод вызывается из свойства
    Controls объекта окна.
    Кроме конструктора, в классе MyForm описано еще два закрытых метода. При вызове метода OnItemChanged() (используется для обработки событий, связанных с выбором нового элемента в списке) командой int index=list.SelectedIndex запоминается индекс выбранного в раскрывающемся списке элемента (значение этого индекса возвращается свойством SelectedIndex). После этого командой pict.
    Image=Image.FromFile(path+files[index])
    для метки определяется новое изображение. Здесь мы приняли во внимание, что названия животных в массиве animals, на основе которого формируется содержимое списка, и название файлов с изображениями животных в массиве размещены в строгом соответствии друг другу. Поэтому если мы знаем индекс, под которым название животного входит в массив
    Глава 8
    412
    animals
    (а значит, ив список, то такой же индекс будет у элемента с названием файла с изображением этого животного в массиве Метод OnButtonClick() используется для обработки события, связанного со щелчком по кнопке. При вызове метода выполняется команда
    Application.Exit()
    , завершающая работу приложения ПОДРОБНОСТИ bНапомним, что события для графических компонентов относятся к типу делегата
    EventHandler
    . Этот делегат подразумевает, что соответствующий метод имеет два аргумента первый — ссылка на объект класса object и второй — ссылка на объект класса
    Even- tArgs
    . Поэтому методы
    OnItemChanged()
    и
    OnButtonClick()
    описаны с двумя аргументами, хотя эти аргументы в методах не исполь- зуются.
    В главном методе командой Application.Run(new MyForm()) создается объект окна, и окно отображается на экране.
    Еще один вариант программы с выбором изображений животных реализован так, что вместо раскрывающегося списка используется список выбора (он полностью отображается в окне, так что для выбора элемента раскрывать ничего ненужно НАЗ А МЕТКУ Если содержимое списка выбора не помещается в выделенную под список область, то по умолчанию появляется полоса прокрутки и список можно просматривать с помощью прокрутки содержимого.
    При запуске программы на выполнение отображается окно, представленное на рис. Рис. 8.18. Окно с изображением енота и списком выбора
    Приложения с графическим интерфейсом
    413
    Окно содержит список выбора из четырех элементов, ив самом начале выбран последний элемент в списке. Если выбрать другой элемент в списке, автоматически изменится и изображение в окне. На рис. 8.19 показано окно с изображением лисы.
    Рис. 8.19. Окно с изображением лисы
    При щелчке по кнопке ОК окно закрывается. Далее рассмотрим программный код, представленный в листинге Листинг 8.5. Использование списка выбора System;
    using System.Drawing;
    using System.Windows.Forms;
    //
    Ʉɥɚɫɫ ɞɥɹ ɨɤɧɚ:
    class MyForm:Form{
    //
    Ʉɨɧɫɬɪɭɤɬɨɪ:
    public MyForm(string[,] data,string title,string path):base(){
    //
    Ɂɚɝɨɥɨɜɨɤ ɨɤɧɚ:
    this.Text=title;
    //
    Ɋɚɡɦɟɪ ɨɤɧɚ:
    this.Size=new Size(295,155);
    //
    Ɉɤɧɨ ɨɬɨɛɪɚɠɚɟɬɫɹ ɜ ɰɟɧɬɪɟ ɷɤɪɚɧɚ:
    this.StartPosition=FormStartPosition.CenterScreen;
    //
    Ɉɤɧɨ ɮɢɤɫɢɪɨɜɚɧɧɵɯ ɪɚɡɦɟɪɨɜ:
    this.FormBorderStyle=FormBorderStyle.FixedSingle;
    //
    Ɉɤɧɨ ɧɟɥɶɡɹ ɪɚɡɜɟɪɧɭɬɶ ɧɚ ɜɟɫɶ ɷɤɪɚɧ:
    this.MaximizeBox=false;
    //
    ɒɪɢɮɬ ɞɥɹ ɨɤɧɚ:
    Глава 8
    414
    this.Font=new Font(
    ƎTimes New RomanƎ,11,FontStyle.Italic|FontStyle.Bold);
    //
    Ɉɛɴɟɤɬ ɦɟɬɤɢ:
    Label pict=new Label();
    //
    ɉɨɥɨɠɟɧɢɟ ɢ ɪɚɡɦɟɪɵ ɦɟɬɤɢ:
    pict.SetBounds(5,5,154,104);
    //
    Ɋɚɦɤɚ ɜɨɤɪɭɝ ɦɟɬɤɢ:
    pict.BorderStyle=BorderStyle.FixedSingle;
    //
    Ⱦɨɛɚɜɥɟɧɢɟ ɦɟɬɤɢ ɜ ɨɤɧɨ:
    this.Controls.Add(pict);
    //
    Ɉɛɴɟɤɬ ɫɩɢɫɤɚ:
    ListBox list=new ListBox();
    //
    Ɋɚɡɦɟɪɵ ɫɩɢɫɤɚ:
    list.Size=new Size(110,80);
    //
    Ƚɨɪɢɡɨɧɬɚɥɶɧɚɹ ɤɨɨɪɞɢɧɚɬɚ ɫɩɢɫɤɚ:
    list.Left=pict.Right+5;
    //
    ȼɟɪɬɢɤɚɥɶɧɚɹ ɤɨɨɪɞɢɧɚɬɚ ɫɩɢɫɤɚ:
    list.Top=pict.Top;
    //
    Ⱦɨɛɚɜɥɟɧɢɟ ɷɥɟɦɟɧɬɨɜ ɜ ɫɩɢɫɨɤ:
    for(int k=0;k list.Items.Add(data[0,k]);
    }
    //
    Ɉɛɪɚɛɨɬɱɢɤ ɫɨɛɵɬɢɹ, ɫɜɹɡɚɧɧɨɝɨ ɫ ɜɵɛɨɪɨɦ
    //
    ɧɨɜɨɝɨ ɷɥɟɦɟɧɬɚ ɜ ɫɩɢɫɤɟ:
    list.SelectedIndexChanged+=(x,y)=>{
    //
    ɂɧɞɟɤɫ ɜɵɛɪɚɧɧɨɝɨ ɷɥɟɦɟɧɬɚ:
    int index=list.SelectedIndex;
    //
    ɇɨɜɨɟ ɢɡɨɛɪɚɠɟɧɢɟ ɞɥɹ ɦɟɬɤɢ:
    pict.Image=Image.FromFile(path+data[1,index]);
    };
    //
    Ⱦɨɛɚɜɥɟɧɢɟ ɫɩɢɫɤɚ ɜ ɨɤɧɨ:
    this.Controls.Add(list);
    //
    Ɉɛɴɟɤɬ ɤɧɨɩɤɢ:
    Приложения с графическим интерфейсом Button btn=new Button();
    //
    ɇɚɡɜɚɧɢɟ ɤɧɨɩɤɢ:
    btn.Text=
    ƎOKƎ;
    //
    Ɋɚɡɦɟɪɵ ɤɧɨɩɤɢ:
    btn.Width=list.Width;
    btn.Height=25;
    //
    Ʉɨɨɪɞɢɧɚɬɵ ɤɧɨɩɤɢ:
    btn.Left=list.Left;
    btn.Top=pict.Bottom-btn.Height;
    //
    Ɉɛɪɚɛɨɬɱɢɤ ɫɨɛɵɬɢɹ, ɫɜɹɡɚɧɧɨɝɨ ɫɨ ɳɟɥɱɤɨɦ
    //
    ɩɨ ɤɧɨɩɤɟ:
    btn.Click+=(x,y)=>{
    Application.Exit();
    };
    //
    Ⱦɨɛɚɜɥɟɧɢɟ ɤɧɨɩɤɢ ɜ ɨɤɧɨ:
    this.Controls.Add(btn);
    //
    ȼ ɫɩɢɫɤɟ ɜɵɛɢɪɚɟɬɫɹ ɩɨɫɥɟɞɧɢɣ ɷɥɟɦɟɧɬ:
    list.SetSelected(list.Items.Count-1,true);
    }
    }
    //
    Ƚɥɚɜɧɵɣ ɤɥɚɫɫ:
    class ListDemo{
    [STAThread]
    //
    Ƚɥɚɜɧɵɣ ɦɟɬɨɞ:
    static void Main(){
    //
    Ⱦɜɭɦɟɪɧɵɣ ɦɚɫɫɢɜ ɫ ɧɚɡɜɚɧɢɹɦɢ ɠɢɜɨɬɧɵɯ ɢ
    //
    ɧɚɡɜɚɧɢɹɦɢ ɮɚɣɥɨɜ ɫ ɢɡɨɛɪɚɠɟɧɢɹɦɢ:
    string[,] data={{
    ƎȼɨɥɤƎ,ƎɅɢɫɚƎ,ƎɆɟɞɜɟɞɶƎ,ƎȿɧɨɬƎ},
    {
    Ǝwolf.jpgƎ,Ǝfox.jpgƎ,Ǝbear.jpgƎ,Ǝraccoon.jpgƎ}};
    //
    Ɂɚɝɨɥɨɜɨɤ ɞɥɹ ɨɤɧɚ:
    string title=
    Ǝȼ ɦɢɪɟ ɠɢɜɨɬɧɵɯƎ;
    //
    ɉɭɬɶ ɤ ɤɚɬɚɥɨɝɭ ɫ ɮɚɣɥɚɦɢ ɢɡɨɛɪɚɠɟɧɢɣ:
    Глава 8
    416
    string path=
    ƎD:/Books/pictures/csharp/Ǝ;
    //
    ɋɨɡɞɚɧɢɟ ɨɛɴɟɤɬɚ ɨɤɧɚ:
    MyForm wnd=new MyForm(data,title,path);
    //
    Ɉɬɨɛɪɚɠɟɧɢɟ ɨɤɧɚ:
    Application.Run(wnd);
    Вообще, программа очень похожа на предыдущую (см. Листинг 8.4), но имеются некоторые новшества. Главное, конечно, связано стем, что вместо объекта класса ComboBox используется объект класса Класс MyForm содержит только описание конструктора. Конструктору класса MyForm первым аргументом передается двумерный текстовый массив data. Первая строка массива должна содержать названия животных, а во второй строке должны содержаться названия файлов сизо- бражениями. Вторым аргументом конструктору класса MyForm передается текст title, определяющий название (заголовок) окна. Третий аргумент конструктора — текстовое значение path с полным путем к каталогу, в котором файлы с изображениями животных.
    Среди наиболее интересных команд в теле конструктора имеет смысл выделить такие Для отображения окна в центре экрана использована команда this.
    StartPosition=FormStartPosition.CenterScreen
    . Для этого свойству объекта окна в качестве значения присваивается константа
    CenterScreen из перечисления
    FormStartPosition
    . Свойство определяет начальную позицию окна на экране Командой this.Font=new Font(
    ƎTimes New RomanƎ,11,FontStyle.
    Italic|FontStyle.Bold)
    для окна задается шрифт. Такой шрифт будет применяться ко всем компонентам в окне (если для этих компонентов шрифт не будет указан явно. Инструкция
    FontStyle.Italic|
    FontStyle.Bold означает, что используется курсивный жирный стиль начертания шрифта Объект list для списка создается командой
    ListBox list=new
    ListBox()
    . То есть это объект класса
    ListBox
    Приложения с графическим интерфейсом Элементы в список выбора добавляются индивидуально, для чего использован оператор цикла. В нем индексная переменная k
    перебирает значения второго индекса в массиве data
    . За каждую итерацию цикла выполняется команда list.Items.Add(data[0,k])
    , которой в список добавляется очередной элемент из первой строки двумерного массива data
    • Обработчиком для события, связанного с выбором нового элемента в списке, является анонимный метод, код которого состоит из двух команд. Командой int index=list.SelectedIndex определяется индекс выбранного в списке элемента, а командой pict.Image=Image.
    FromFile(path+data[1,index])
    для метки задается новое изображение (название файла с изображением выбирается из второй строки двумерного текстового массива data
    ).
    • Обработчик для события, связанного со щелчком по кнопке, также реализуется в виде анонимного метода Командой list.SetSelected(list.Items.Count-1,true)
    в списке выбирается элемент, который последним добавлялся в список. Для выбора элемента в списке из объекта списка вызывается метод. Вторым аргументом методу передается значение, означающее, что соответствующий элемент выделяется. Первый аргумент метода определяет индекс выбираемого в списке элемента. Мы использовали выражение Свойство
    Items возвращает ссылку на коллекцию элементов списка. Свойство
    Count возвращает количество элементов в коллекции. Индекс последнего элемента в коллекции на единицу меньше количества элементов в коллекции. При выделении элемента в списке происходит событие
    SelectedIndexChanged
    , ив результате вызова метода-обработчика пиктограмма получает изображение, соответствующее выбранному элементу.
    В главном методе создается двумерный массив data с названиями животных и названиями файлов с изображениями, переменная title со значением для заголовка окна и переменная path, содержащая текст с путем к каталогу с файлами. Эти переменные передаются в качестве аргументов конструктору класса MyForm при создании объекта окна wnd
    . Затем окно отображается на экране
    Глава Использование переключателей
    Двум богам служить нельзя, дорогой доктор.
    из к/ф Собачье сердце»
    В следующем примере мы прибегнем к помощи переключателей для того, чтобы показывать в диалоговом окне изображения животных. На рис. 8.20 показано, как выглядит окно при запуске программы на вы- полнение.
    1   ...   28   29   30   31   32   33   34   35   ...   40


    написать администратору сайта