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

  • Табл. 8.1. Некоторые классы для создания графических элементовКласс Описание

  • Создание пустого окна

  • New Project

  • Рис. 8.4. Выбор добавляемого элемента в проект Приложения с графическим интерфейсом389

  • Properties

  • Windows Application

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


    Скачать 5.54 Mb.
    НазваниеВасильев А. Н. Программирование
    АнкорВасильев А.Н. Основы программирования на C
    Дата20.09.2022
    Размер5.54 Mb.
    Формат файлаpdf
    Имя файлаVasilev_Programmirovanie-na-C-dlya-nachinayushchih-Osobennosti-y.pdf
    ТипДокументы
    #686596
    страница30 из 40
    1   ...   26   27   28   29   30   31   32   33   ...   40
    1. Напишите программу, в которой есть обобщенный статический метод с двумя аргументами обобщенного типа. При вызове метода аргументы должны обмениваться значениями Напишите программу, в которой есть статический обобщенный метод. Метод не возвращает результата аргументом методу передается массив с элементами обобщенного типа. При вызове метода выполняется циклическая перестановка элементов массива первый элемент становится вторым, второй элемент становится третьими так далее, а последний элемент становится первым Напишите программу, содержащую обобщенный класс со свойством обобщенного типа. Значением свойства возвращается значение закрытого поля обобщенного типа. При присваивании значения свойству значение присваивается закрытому полю Напишите программу, содержащую обобщенный класс с индексато- ром обобщенного типа. Также в классе должно быть поле, являющееся ссылкой на массив из элементов обобщенного типа. Считывание и присваивание значений с использованием индексатора подразумевают считывание значений элементов массива и присваивание значений элементам массива
    Обобщенные типы Напишите программу, в которой создается цепочка из объектов, созданных на основе обобщенного класса имеется последовательность объектов, ив этой последовательности первый объект ссылается на второй, второй объект ссылается на третий, итак далее. Обобщенный класс, помимо прочего, должен содержать поле обобщенного типа и поле, являющееся ссылкой наследующий объект в цепочке. Предложите методы для работы с такой цепочкой объектов Напишите программу, в которой есть статический обобщенный метод. Аргументом методу передается массив из элементов обобщенного типа. Результатом метод возвращает значение наибольшего/наименьшего элемента в массиве. Чтобы можно было сравнивать значения обобщенного типа, на этот обобщенный тип следует наложить ограничение тип должен быть таким, что реализует интерфейс IComparable. Если так, то для сравнения значений может использоваться метод CompareTo(). Метод вызывается из одного объекта (первый объект) обобщенного типа, а аргументом ему передается другой (второй) объект обобщенного типа (сравниваемые объекты. Результатом метода является целое число. Отрицательное число возвращается, если первый объект меньше второго. Положительное число возвращается, если первый объект больше второго. Если объекты равны друг другу, то результатом метода) является нулевое значение Напишите программу со статическим обобщенным методом, которому в качестве аргумента передается массив из элементов обобщенного типа. При вызове метода выполняется сортировка элементов массива в порядке возрастания/убывания. Для возможности сравнения значений элементов массива друг с другом (больше/меньше) следует наложить на обобщенный тип ограничение, состоящее в необходимости реализации интерфейса IComparable. Для сравнения значений обобщенных типов использовать метод CompareTo().
    8. Напишите программу, содержащую обобщенный статический метод. В качестве аргумента методу передается значение обобщенного типа. Методом в консольное окно выводится одно из трех разных сообщений, в зависимости от типа переданного аргумента. Отслеживаются такие случаи аргументом является значение типа int, аргументом является значение типа char, и аргументом передается значение типа, отличного от int и char.
    9. Напишите программу, в которой есть обобщенный класс. У обобщенного класса есть поле, являющееся ссылкой на массив из элементов
    Глава обобщенного типа. Опишите для класса операторный метод для оператора, позволяющий вычислять сумму двух объектов класса. Результатом является объект этого же класса. Массив в объекте-результате получается объединением массивов суммируемых объектов Напишите программу, в которой есть обобщенный класс с двумя обобщенными параметрами (первый и второй. У класса есть два поля, являющихся ссылками на массивы из элементов обобщенного типа первого и второго. Массивы имеют одинаковые размеры. Опишите индексатор, в котором индексом указывается значение второго обобщенного типа, а результатом индексатора является значение первого обобщенного типа. Предполагается, что индексом указывается одно из значений из второго массива, а считывается или присваивается значение для соответствующего элемента из первого массива. Предложите механизм добавления новых элементов в массивы и удаления уже существующих элементов из массивов. Операции должны выполняться так, чтобы количество элементов в обоих массивах было одинаковым
    Глава ПРИЛОЖЕНИЯ С ГРАФИЧЕСКИМ
    ИНТЕРФЕЙСОМ
    Профессор, это будет небывалый в мире экс- перимент.
    из к/ф Собачье сердце»
    В этой главе мы обсудим вопросы, связанные с созданием приложений с графическим интерфейсом. В частности, мы узнаем каковы основные принципы создания приложений с графическим интерфейсом как создается окно формы как реализуются графические компоненты что нужно делать для обработки событий, связанных с графическими компонентами о некоторых возможностях в плане отображения графики.
    Понятно, что это далеко неполный список приемов и методик, с которыми нам предстоит познакомиться. На нашем пути будет много нового и интересного, поэтому имеет смысл сразу приступить к делу.
    Принципы создания графического интерфейса Господин Калиостро, а как насчет портрета Погодите вы, голубчик, с портретом Дайте ему со скульптурой разобраться.
    из к/ф Формула любви»
    Тема, связанная с созданием приложений с графическим интерфейсом, более чем многогранна и исключительно объемна. Мы, в силу объективных причин, все вопросы осветить не сможем, но постараемся
    Глава остановиться на наиболее важных и принципиальных. Начнем с базовых принципов, которые лежат в основе технологии создания приложений с графическим интерфейсом.
    В общих чертах наша задача состоит в том, чтобы написать программный код, при выполнении которого отображается окно с элементами управления. Это могут быть кнопки, списки, опции, переключатели — список элементов довольно обширный, но все же ограниченный. Среди элементов есть статические — такие, например, как текстовая метка, основное назначение которой состоит в том, чтобы отображать текст. Но большинство элементов функциональные. Сними можно выполнять некоторые манипуляции (например, щелкать по кнопке или выбирать пункт в раскрывающемся списке. Обычно у этих манипуляций есть последствия ведь элементы управления добавляются именно для того, чтобы программа реагировала на действия, связанные с этими элементами. Как же создать такую программу Задачу можно разбить на две составляющие, или две подзадачи. Первая связана с созданием собственно графического интерфейса. Вторая подразумевает определение реакции программы на действия с элементами управления графического интерфейса. Каждую подзадачу мы рассмотрим отдельно.
    Принцип создания графического интерфейса простой. Каждый элемент управления реализуется с помощью объекта. Для каждого типа элементов есть свой класс. Например, если нам нужна кнопка, то необходимо создавать объект класса Button. Если нам нужна метка для отображения текста, то создается объект класса Label. Само окно, в которое добавляются элементы управления, реализуется как объект класса Form. Соответствующие объекты создаются, определяются их характеристики, размеры и положение, элементы добавляются в контейнер (которым может быть, например, окно. В табл. 8.1 перечислены некоторые (далеко не все) классы из пространства имен System.Windows.Forms, которые позволяют создавать объекты для основных графических элементов управления.
    Табл. 8.1. Некоторые классы для создания графических элементов
    Класс
    Описание
    Button
    Класс для создания элемента кнопки
    CheckBox
    Класс для создания элемента опционного типа (опция или кнопка с режимом вдавливания)
    ComboBox
    Класс для создания элемента список выбора»
    Form
    Класс для создания объекта окна формы
    GroupBox
    Класс для создания элемента, используемого при группировке таких элементов управления, как переключатели
    Приложения с графическим интерфейсом
    383
    Label
    Класс для создания объекта текстовой метки (элемент, который может содержать текст)
    ListBox
    Класс для создания объекта элемента, представляющего собой раскрывающийся список
    Panel
    Класс для создания объекта панели. Панель является контейнером для размещения других элементов управления
    RadioButton
    Класс для создания объекта элемента, являющегося переключателем
    TextBox
    Класс для создания объекта элемента, представляющего собой поле для ввода значений
    Еще раз подчеркнем, что в действительности классов и элементов (в том числе и всевозможных меню) намного больше. Выше перечислены лишь те, что представляют наибольший интерес и будут задействованы в самой ближайшей перспективе.
    Как именно создаются объекты для компонентов, настраиваются их свойства и выполняются прочие сопутствующие операции, мы рассмотрим чуть позже на конкретных примерах. Пикантность ситуации в том, что этого мало. Нужно еще научить программу реагировать на действия пользователя с элементами графического интерфейса. Здесь нужно учесть, что есть принципиальное отличие в способе выполнения консольных программ и программ с графическим интерфейсом. Если консольная программа сама обращается к операционной системе, то при выполнении программы с графическим интерфейсом операционная система отправляет сообщения программе. Понять это несложно. Представим, что имеется окно с двумя кнопками. Пользователь может нажать на любую из них. Между кнопками и пользователем есть посредник — операционная система. При щелчке по кнопке операционная система, образно выражаясь, сообщает программе, на какой кнопке произошло соответствующее событие. Программа, в свою очередь, должна уметь реагировать на него. Это в теории. На практике ситуация следующая. С каждый элементом управления связано определенное количество событий. Здесь событие понимается в программистском смысле. Например, у объектов класса Button (кнопка) есть событие Click. Данное событие генерируется, если по кнопке выполнен щелчок. Мы можем добавить в список обработчиков события ссылки на методы, которые будут вызываться при возникновении события. Собственно, это то, что нам нужно ПОДРОБНОСТИ bУ класса кнопки
    Button событий много, не только событие Например, есть события
    KeyDown и
    KeyUp
    , которые генерируются, если при активной кнопке (кнопке передан фокус) соответственно
    Глава нажимается и отпускается клавиша на клавиатуре. Событие
    MouseEnter генерируется, когда курсор мыши оказывается над областью кнопки, а событие
    MouseLeave генерируется, когда курсор мыши покидает область кнопки. Итак далее. Полный список событий внушительный.
    События обрабатываются экземплярами делегата Этот делегат определен в пространстве имен
    System
    . Делегат соответствует методам, не возвращающим результату которых два аргумента. Первый аргумент является объектной ссылкой класса. Через этот аргумент передается ссылка на объект элемента, на котором произошло событие (объект, сгенерировавший событие. Второй аргумент является объектной ссылкой класса
    EventArgs
    (пространство имен
    System
    ). Через этот аргумент передается ссылка на объект, содержащий информацию о произошедшем событии.
    Понятно, что создание приложения с графическим интерфейсом имеет и иные особенности. Но они во многом второстепенны, и соответствующие вопросы мы будем рассматривать по мере обсуждения примеров.
    Создание пустого окна
    Я за разделение труда, доктор.
    из к/ф Собачье сердце»
    Знакомство с приемами создания приложений с графическим интерфейсом начнем сочень простой программы. При запуске программы на выполнение будет отображаться пустое окно. Окно представлено на рис. Рис. 8.1. При запуске программы на выполнение отображается пустое окно
    Приложения с графическим интерфейсом
    385
    Оно не содержит ничего, кроме строки названия, в которой отображается заголовок окна Простое окно. Размеры окна можно изменять с помощью мыши, его можно свернуть и развернуть, а для закрытия окна следует щелкнуть по системной пиктограмме с крестиком в правом верхнем углу окна. Программный код, выполнение которого приводит к отображению окна, представлен в листинге Листинг 8.1. Создание пустого окна System;
    using System.Windows.Forms;
    //
    Ʉɥɚɫɫ ɫ ɝɥɚɜɧɵɦ ɦɟɬɨɞɨɦ:
    class SimpleFormDemo{
    //
    Ⱥɬɪɢɛɭɬ ɢɫɩɨɥɶɡɨɜɚɧɢɹ ɨɞɧɨɩɨɬɨɱɧɨɣ ɦɨɞɟɥɢ:
    [STAThread]
    //
    Ƚɥɚɜɧɵɣ ɦɟɬɨɞ:
    static void Main(){
    //
    ɋɨɡɞɚɧɢɟ ɨɛɴɟɤɬɚ ɨɤɧɚ:
    Form mf=new Form();
    //
    Ɂɚɝɨɥɨɜɨɤ ɨɤɧɚ:
    mf.Text=
    Ǝɉɪɨɫɬɨɟ ɨɤɧɨƎ;
    //
    ȼɵɫɨɬɚ ɨɤɧɚ:
    mf.Height=200;
    //
    ɒɢɪɢɧɚ ɨɤɧɚ:
    mf.Width=300;
    //
    Ɉɬɨɛɪɚɠɟɧɢɟ ɨɤɧɚ:
    Application.Run(mf);
    Программа небольшая и содержит всего несколько команд в главном методе. Сначала командой Form mf=new Form() создается объект mf класса Form. Это объект окна. Свойство Text объекта окна отвечает за заголовок окна (отображается в строке названия окна. Командой свойству присваивается значение. Тем
    Глава самым мы определяем заголовок окна. Высота окна устанавливается равной 200 пикселей. Для этого значение 200 присваивается свойству
    Height объекта окна mf (команда mf.Height=200). Для определения ширины окна (в пикселях) командой mf.Width=300 присваиваем значение свойству Width объекта окна Само по себе создание объекта окна не означает, что окно появится на экране. Мы просто создаем объект, содержащий информацию о свойствах и характеристиках окна. Для отображения окна используется команда
    Application.Run(mf)
    . В ней мы из класса Application (пространство имен System) вызываем статический метода в качестве аргумента методу передается объект окна. В результате окно становится видимым, а также запускается стандартный цикл обработки сообщений для приложения. Проще говоря, окно появляется на экране и пользователь может с ним взаимодействовать ПОДРОБНОСТИ bПринцип выполнения приложений с графическим интерфейсом немного отличается от способа выполнения консольных программ. Консольная программа выполняет команды, а если необходимо, то ожидает действий пользователя (при вводе данных, например. Работа приложения с графическим интерфейсом, по большому счету, связана стем, что приложение реагирует на действия пользователя. Приложение как бы постоянно проверят, выполнил ли пользователь какие-то действия, и если так, то программа реагирует на эти действия. Такой режим постоянной проверки реализуется через цикл обработки сообщений для приложения.
    В заголовке программы подключаются пространства имени. Последнее необходимо для того, чтобы классы графических компонентов (в данном случае класс Form) и другие сопутствующие утилиты для реализации графического интерфейса были доступны в программе. Также стоит обратить внимание на наличие атрибута [STAThread] перед описанием метода Main(). Это инструкция, означающая, что при выполнении приложения необходимо использовать однопоточную модель. Программа у нас очень простая. Она будет работать и без этой инструкции. Номы все же инструкцию
    [STAThread]
    используем, и будем ее использовать в следующих примерах Приложения с графическим интерфейсом ПОДРОБНОСТИ bИнструкция
    [STAThread]
    нужна для того, чтобы избежать потенциальных проблем при работе с объектами (COM — это сокращение от Component Object Model). Большинство объектов рассчитаны на работу в однопоточной модели STA (сокращение от Single-Threaded Apartment). Проще говоря, объект должен создаваться и использоваться в едином потоке. Иначе могут возникнуть проблемы. По умолчанию в языке C# используется режим MTA (сокращение от Multi-Threaded Apartment). Атрибут
    [STAThread]
    указывается для главного метода программы и представляет собой инструкцию использования однопоточной модели при работе с объектами. Если объекты в программе не используются, то наличие атрибута не имеет видимого эффекта. Создание приложений с графическим интерфейсом подразумевает, что для метода
    Main()
    указывается атрибут Уместно также будет вкратце описать способ (один из возможных, которым можно создать приложение с графическим интерфейсом ив частности такое, как описано выше. Создание приложения начинается с команды New Project вменю среды разработки
    Visual Studio Express. В окне New Project выбираем шаблон пустого проекта (Empty Project), как показано на рис. Рис. 8.2. Создание пустого проекта
    Глава В результате создается пустой проект. Нам необходимо добавить в него файл с описанием главного класса программы. Для этого можем в контекстном меню проекта в команде-меню Add выбрать пункт Class, как показано на рис. Рис. 8.3. Добавление класса в проект
    Откроется диалоговое окно Add New Item (рис. 8.4), в котором выбирается тип добавляемого элемента (в данном случае это класс).
    Рис. 8.4. Выбор добавляемого элемента в проект
    Приложения с графическим интерфейсом
    389
    Также в проект необходимо подключить ссылки (в нашем случае это
    System и System.Windows.Forms). Для этого в контекстном меню проекта в команде-меню Add выбираем команду Reference (рис. Рис. 8.5. Добавление ссылок в проект
    В окне Reference Manager устанавливаем флажки для тех ссылок, которые должны быть включены в проект (рис. Рис. 8.6. Возле добавляемой ссылки следует установить флажок
    Глава По умолчанию для приложения устанавливается консольный режим. Последствия такие одновременно с открытием окна (созданного в программе) отображается и консольное окно. Чтобы устранить этот побочный эффект, необходимо в свойствах проекта указать, что приложение не консольное, а приложение Windows. Для этого в контекстном меню проекта выбираем команду Properties, как показано на рис. Рис. 8.7. Определение свойств проекта
    Откроется вкладка свойств проекта. В этой вкладке в разделе
    Application в раскрывающемся списке Output type следует выбрать пункт Windows Application (рис. Описанные выше действия по настройке параметров приложения нужно будет выполнять и для прочих примеров, рассматриваемых далее в главе НАЗ А МЕТКУ Выше мы в основном использовали команды контекстного меню проекта. Понятно, что аналогичные действия можно выполнять и через пункты главного меню
    Приложения с графическим интерфейсом
    1   ...   26   27   28   29   30   31   32   33   ...   40


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