CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Пошарпанный практикум

Игорь ПАВЛОВ pavlov_igor@nm.ru

В предыдущей части пошарпанного практикума мы начали изучать язык C#, по ходу тренируясь писать программы на примерах консольных приложений (CUI-приложений). Этот вид приложений, бесспорно, имеет право на существование. Но на дворе XXI век, а значит более востребованы программы, имеющие графический интерфейс, — так называемые GUI-приложения. Написанием данного типа программ мы сейчас и займемся.
Исходные тексты примеров программ можно загрузить с сайта «Моего Компьютера»: http://www.mycomp.com.ua/csharp2.zip.
Продолжение, начало см. в МК № 29 (252).

В качестве лирического вступления у нас будет маленький агитпроп. В принципе, все популярные языки программирования (C++, Visual Basic) давно обзавелись своими .NET-аналогами (C#, Managed Extensions for C++, VB.NET). Все, кроме Borland Delphi Language. До недавнего времени среда разработки Delphi не содержала средств, позволяющих писать полноценные .NET-программы (не совсем удачная попытка .NET Preview for Delphi 7 не в счет). Такая ситуация с языками держалась на протяжении последних двух лет. И вот недавно, с большим опозданием от других языков, была анонсирована среда Delphi 8, предназначенная именно для разработки .NET-приложений. Иначе говоря, все популярные языки программирования уже развиваются в сторону .NET-технологий, и все программисты медленно, но уверенно переползают на платформу .NET. Излишне «консервативным» же программистам в ближайшем будущем, вероятно, придется «пасти задних».

Вкратце напомню, что для написания .NET-программ на языке C# сгодится любой текстовый редактор. А для компиляции и выполнения программ необходима установленная на компьютере среда .NET Framework, которую можно бесплатно загрузить с сайта Microsoft по адресу http://go.microsoft.com/fwlink/?LinkId=5584(более детально описано в [3]). Конечно, идеальный вариант — установить на компьютере среду разработки Visual Studio .NET. При этом вы сразу получаете мощнейший редактор, .NET Framework и компилятор в одном флаконе. Если все необходимое уже имеется под рукой, то приступим к написанию банального GUI-приложения.

Давно известно, что первым словом ребенка является «мама», а первым «словом» программиста — «Hello, world!» Поэтому писать будем программу, выводящую банальное окно с надписью «Hello, world!».

Язык C# является полностью объектно-ориентированным, поэтому C#-программа состоит из описаний классов и объектов. Классы, в свою очередь, содержат члены: поля, свойства, методы, события и проч. Ниже приведен код GUI-программы, создающей пустую форму.

Как уже говорилось ранее, код можно набирать в любом текстовом редакторе. Сохраните набранный код в файле Form1.cs. (файлам с исходным кодом на C# принято давать расширения .cs). Для компиляции программы наберите в командной строке:

Если ошибок при наборе кода не было, то компиляция должна пройти успешно, после чего появится файл Form1.exe. Этот файл — ваша первая .NET-программа с графическим интерфейсом. Смело запускайте, и вы увидите, что программа Form1.exe при запуске создает окно небольшого размера (Рис. 1).

Рис. 1.

Теперь пояснения к набранному коду. Любая .NET-программа базируется на FCL-классах (Framework Class Library). Для удобства и для предотвращения конфликта имен классов все FCL-классы были сгруппированы в пространства имен (namespace). В первой строчке объявляется, что в программе будут использоваться типы из пространства имен System.Windows.Forms. Это пространство имен содержит классы, предназначенные именно для написания GUI-программ.

Далее в коде идет описание класса App с одним статическим методом Main(). Этот метод является точкой входа в программу; именно с него начинается выполнение кода. В этом методе создается экземпляр класса Form, который сразу передается в качестве аргумента статическому методу Run класса Application. Класс Form — это заготовка формы, которую вы видели при запуске программы Form1.exe. При создании объекта — экземпляра класса Form, все свойства объекта принимают значения по умолчанию, что соответствует квадратной форме небольшого размера.

Как видите, в созданной программе надписи «Hello, world!» не наблюдается. Да и функциональностью, честно говоря, ваша первая программа не блещет. Будем развивать программистскую мысль и дорабатывать ваше детище. Создайте файл Form2.cs и наберите в нем следующий код:

Скомпилируйте из командной строки:

Запусти[ударение!!]те Form2.exe, и увидите примерно то, что изображено на Рис. 2.

Рис. 2.

Выводимая форма немного преобразилась. Посмотрим на набранный код Form2.cs. В нем осталось все от прежней программы Form1.cs, плюс добавилось описание нового класса формы Form2. Наш класс формы Form2 наследуется от стандартного класса Form. Класс Form2 имеет всего один метод с названием Form2(). Этот метод является конструктором класса и вызывается при создании объекта. В этом конструкторе устанавливаются некоторые свойства формы (заголовок, положение, высота, ширина) в нужные нам значения. Далее описан класс App, имеющий точку входа в программу — метод Main(). В этом методе уже создается не объект стандартного класса Form, а объект нового, описанного нами, класса Form2.

Как и прежде, в созданной нами программе нет надписи «Hello, world!» Думаю, самое время ее добавить. Снова создайте файл Form3.cs и наберите в нем код, приведенный ниже:

Скомпилировав и запустив программу Form3.exe, вы увидите следующее окно (см. Рис. 3).

Рис. 3.

Да! Вы только что написали классический пример «Hello, world!», с которого начинается изучение любого языка программирования. Теперь немного пояснений по коду Form3.cs. Как видите, добавилось еще несколько новых строчек.

Для демонстрации текста на форме используется специальный класс —Label (метка). В строке private Label labelHello; объявляется переменная labelHello, имеющая тип Label. Далее, в конструкторе формы Form2() задаются некоторые свойства формы. После этого создается объект-метка labelHello и устанавливаются ее свойства, в частности координаты положения, текст и размер шрифта.

Для задания размера шрифта метки используется тип Font, который описан в пространстве имен System.Drawing. Обратите внимание на первую строку кода, в которой указывается, что в программе используются типы из пространства имен System.Drawing, в частности тип Font.

В конце метода-конструктора формы созданный объект-метка добавляются на форму:

Теперь пофантазируем о добавлении какой-либо функциональности в вашу программу, например кнопки, при нажатии на которую текст «Hello, world!» будет меняться на «Bye-bye, world!» Создайте в текстовом редакторе очередной файл, назовите его Form4 и наберите нижеприведенный код:

Как видите, в коде появилась новая переменная, имеющая тип Button. Это кнопка. Как и в случае с меткой (labelHello), параметры кнопки устанавливаются в конструкторе формы Form2(). Задается расположение кнопки на форме, ее текст, а также задается обработчик события нажатия на кнопку.

Обработка событий в C# основывается на так называемых делегатах (delegate). Делегат — это тип, определяющий прототип метода (количество параметров и их типы), который будет вызван при срабатывании события. В примере Form4.cs метод button_Click формы Form2 имеет прототип, четко определенный делегатом EventHandler. В строке исходного кода this.button.Click += new EventHandler(button_Click); происходит регистрация метода button_Click() в качестве обработчика события нажатия кнопки button. В реализации метода button_Click() строка this.labelHello.Text = "Bye-bye, world!"; меняет текст в окне на «Bye-bye, world!»

Если скомпилировать и запустить программу, появится окно (Рис. 3). При нажатии на кнопку надпись в окне изменяется на «Bye-bye, world!» (Рис. 4).

Рис. 4.

В описанных выше программах были применены всего несколько FCL-типов из пространства имен Windows.Forms (Form, Label, Button). Рассказать про все или даже про основные FCL-типы не представляется возможным, да и смысла в этом нет, так как запомнить все типы, содержащиеся в FCL, просто невозможно — их десятки тысяч. Лучший выход из положения — справочная система под рукой. Я имею ввиду MSDN, в которой можно найти практически всю информацию о .NET Framework. MSDN на данный момент занимает три компакт диска и продается там же, где и Visual Studio .NET.

Все рассмотренные сегодня программы были написаны самым простым способом: с применением текстового редактора и компилятора командной строки. По эффективности это примерно то же, что палкой-копалкой рыть канаву. Для ускорения процесса разработки программ давно применяются так называемые среды разработки. Самым известным представителем такого рода программ является Visual Studio .NET. В этой среде разработки имеется специальный визуальный редактор, в котором несколькими движениями мыши настраиваются свойства любого компонента. К примеру, в исходном коде программы Form4.cs есть строки, в которых устанавливаются различные свойства объекта типа Label. В визуальном редакторе Visual Studio .NET можно просто схватить мышкой объект-метку и переместить на нужную позицию (Рис. 5), а среда разработки за вас вставит в исходный код программы строки вида:

Рис. 5.

С такой же легкостью настраивается текст объекта-метки и другие ее свойства. Все эти красивости и удобства, бесспорно, ускоряют процесс написания программ, но не способствуют пониманию, как и что в написанной программе работает. Как вы понимаете, знания, равно как и умение писать C#-программы в простом текстовом редакторе, никогда лишними не будут.

Литература:

1. Том Арчер. Основы C#: пер. с англ. — М.: Microsoft Press, 2001. — 448с.

2. Джеффри Рихтер. Программирование на платформе .NET Framework: пер. с агнл. — М.: Microsoft Press, 2002. — 488с.

3. Игорь Павлов. Что .NET грядущий нам готовит? «Мой компьютер» №10 (233)

4. Игорь Павлов. Пошарпанный практикум «Мой компьютер» №29 (252)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov