
C# для чайников
.pdf
Благодаря этим надписям пользователь будет знать, что делать после запуска программы. Ничто не сбивает с толку пользователей сильнее, чем запутанное диалоговое окно.
5.Аналогично изменение свойства Text формы изменяет текст в заголовке окна. Щелкните где-нибудь на форме, введите новое название в свойство Text и нажмите клавишу <Enter>.
В данном примере установим название заголовка "Приложение копирования текста".
6.При изменении свойств формы щелкните на свойстве AcceptButton (в группе Misc окна Properties), а затем — в пустом месте справа от свойства Accept Button для указания, какая кнопка должна реагировать, когда пользователь нажмет клавишу <Enter>. В данном случае выберите buttonl.
Надпись "Сору" является текстом на этой кнопке, но ее название остается b u t - t o n l . Его тоже можно изменить при желании. Это свойство Name элемента Form, т.е. свойство формы, а не кнопки.
7.Выберите нижнее текстовое поле и прокрутите группу свойств Behavior, пока не доберетесь до свойства Readonly. Установите его значение равным True путем выбора из раскрывающегося списка, как показано на рис. 1.9.
Рис. 1.9. Присвоение текстовому полю значения "только для чтения" не дает возможности редактировать это поле при выполнении программы
8. Щелкните на кнопке Save в панели инструментов Visual Studio для сохра нения своей работы.
Во время работы пользуйтесь иногда кнопкой Save, чтобы не потерять слиш ком много, если ваша собака вдруг зацепит кабель питания компьютера. У несохраненных файлов изображена звездочка на вкладке в верхней части окна
|
Forms Designer. |
|
|
|
Компиляция |
приложения |
|
|
Выберите команду меню Build^Build Windows Application 1, чтобы перекомпилиро |
||
|
вать приложение. Этот шаг скомпилирует новое приложение Windows с формой, кото |
||
|
рую вы только что создали. В окне Output вы должны увидеть сообщение 1 |
suc |
|
|
ceeded, 0 |
f a i l e d , 0 s k i p p e d . |
|
н а С # |
Глава 1. Создание вашей первой Windows-программы на С# |
41 |
|
|
|
|

Теперь запустите программу, выбрав команду меню Debug^Start Without Debug ging. Запущенная программа откроет форму, которая похожа на ту, которую вы редакти ровали, как показано на рис. 1.10. Вы можете вводить текст в верхнее текстовое поле, но не можете в нижнее (если вы не забыли изменить свойство ReadOnly).
Рис. 1.10. Окно программы выгля дит так же, как и форма, которую вы только что скомпилировали
Учим форму трудиться
Программа выглядит правильно, но она ничего не делает. Если вы щелкнете на кноп ке Сору, ничего не случится. Пока что вы установили только свойства из группы Ap pearance, — свойства, которые контролируют внешний вид элементов управления. Те перь выполните следующие действия, чтобы кнопка Сору действительно могла копиро вать текст из одного текстового поля в другое.
1.В окне Forms Designer снова выберите кнопку Сору.
2.В окне Properties щелкните на пиктограмме маленькой молнии над спи ском свойств, чтобы открыть новый набор свойств.
Эти свойства называются событиями элементов управления. Они определяют, что должен делать элемент управления при выполнении программы.
Вы должны установить событие Click. Оно указывает, что кнопка должна делать,
,когда пользователь щелкнет на ней. Это вполне логично.
3.Дважды щелкните на событии Click и посмотрите, как все изменится.
Режим Design— один из двух различных способов обзора приложения. Другим способом является режим Code, в котором показан исходный код С#, созданный незаметно для вас мастером проектирования. Пакет Visual Studio "знает", что для того, чтобы программа могла переносить текст, вы должны ввести код на языке С#.
Вместо пиктограммы молнии можно просто дважды щелкнуть на самой кнопке в окне Forms Designer.
При установке события Click экран в Visual Studio переключается в режим Code и создается новый метод. Этому методу присваивается описательное имя b u t t o n l _ C l i c k () . Когда пользователь щелкнет на кнопке Сору, этот метод выполнит фактическое перемещение текста из источника textBoxl в приемник textBox2.
42 |
Часть I. Создание ваших первых программ на С# |

Не нужно сильно беспокоиться о том, что такое метод. Методы описываются в главе 8, "Методы класса". Сейчас просто следуйте указаниям.
Данный метод просто копирует свойство T e x t из поля textBoxl в поле t e x t B o x 2 .
4. Поскольку кнопка buttonl теперь обозначена " С о р у " , переименуйте метод с
помощью команды меню Refactor. Дважды щелкните на названии but tonl Click в окне Code . Выберите команду Ref actors Rename. В поле
New Name введите CopyClick. Нажмите дважды клавишу <Enter> (следите при этом за полями в диалоговом окне).
Для текста элемента управления необходимо ясно отображать его цели.
Появившееся в пакете Visual Studio 2005 меню Refactor является самым надеж ным способом для выполнения некоторых модификаций кода. Например, ручное изменение названия метода b u t t o n l _ C l i c k привело бы к потере ссылки на ме тод где-нибудь в коде, который Visual Studio сгенерировала для вас.
Второе диалоговое окно операции переименования показывает, что именно изме нится: метод и любые ссылки на него в комментариях, текстовых строках или других местах в коде. Вы можете снять отметки в верхней панели, чтобы эти эле менты не изменялись. В нижней панели Preview Code Changes можно увидеть, что и как изменится. Используйте меню Refactor, чтобы уберечься от большого количества работы, часто ведущей к ошибкам.
5. Добавьте следующую строку кода к методу CopyClick ( ) : t e x t B o x 2 . T e x t = t e x t B o x l . T e x t ;
Обратите внимание на то, как язык С# пытается вам помочь в процессе ввода текста. На рис. 1.11 показан экран во время ввода последней части приведен ной выше строки. Раскрывающийся список свойств для текстового поля дает возможность вспомнить, какие свойства доступны и как они используются. Эта функция автозавершения очень помогает во время программирования. (Если список автозавершения не появляется, нажмите комбинацию клавиш <Ctrl+Space>).
6.Выберите команду меню Build^Build WindowsApplicationl для добавле
ния к программе нового метода.
Проверка конечного п р о д у к т а
Выберите команду меню DebugoStart Without Debugging, чтобы выполнить про грамму в последний раз. Введите какой-нибудь текст в исходное текстовое поле и затем щелкните на кнопке Сору. Текст волшебным образом скопируется в приемное текстовое поле, как показано на рис. 1.12. Весело повторяйте этот процесс, вводя какой угодно текст и копируя его, пока не устанете от этого.
Возвращаясь к процессу создания приложения, вы можете быть поражены тем, на сколько это все основано на рисунках и работе с мышью. Захват элементов управления, размещение их в форме, установка свойств — и всего лишь одна строка кода С#!
Глава 1. Создание вашей первой Windows-программы на С# |
43 |

Рис. 1.11. Функция автозавершения отображает названия свойств во время набора текста
Рис. 1.12. Это работает!
Вы можете поспорить, что программа делает не так уж много, но позвольте с этим не согласиться. Посмотрите некоторые из более ранних книг по програм мированию для Windows, написанные до появления мастера приложений, и вы увидите, как много часов заняло бы написание даже такого простого приложе ния, как это.
П р о г р а м м и с т ы на Visual Basic 6.0, б е р е г и т е с ь !
Для программистов на Visual Basic 6.0, которые есть среди вас, все это, возможно, кажется слишком приземленным. Действительно, Forms Designer работает почти так же, как и в поздних версиях Visual Basic. Однако .NET Forms Designer, применяемый языком Visual С#, намного более мощный, чем его двойник из Visual Basic 6.0. Плат- I форма .NET и язык С# (а также и язык Visual Basic .NET в этом отношении) используют библиотеку подпрограмм .NET, которая является более мощной, обширной и целостной, чем старая библиотека Visual Basic. Кроме того, платформа .NET поддерживает разра-
44 |
Часть I. Создание ваших первых программ на С# |
ботку распределенных программ для сети, так же как и программ, применяющих множе ство языков, что не умеет Visual Basic. Но главное усовершенствование Forms Designer, используемого языками С# и Visual Basic .NET, по сравнению с предшественником Vis ual Basic 6.0, заключается в том, что весь код, сгенерированный для вас, является кодом, который можно легко изменять. В Visual Basic 6.0 вы должны были довольствоваться тем, что давал вам мастер проектирования.
Глава 1. Создание вашей первой Windows-программы на С# |
45 |

Глава 2
Создание консольного приложения на С#
>Создание шаблона простого консольного приложения
>Изучение шаблона простого консольного приложения
>Составные части шаблона простого консольного приложения
аже начинающие программисты на С# в состоянии писать программы для Windows. Не верите? Тогда обратитесь к главе 1, "Создание вашей первой Windows-программы на С#". Однако изучение основ С# лучше проводить, не отвлекаясь на графический пользовательский интерфейс, а создавая так называемые консольные при ложения, для которых требуется писать существенно меньше кода и которые значитель
но проще понимать.
В этой главе Visual Studio понадобится для создания шаблона консольного приложе ния. Затем вручную этот шаблон будет несколько упрощен. Полученная в результате за готовка будет применяться для множества программ, рассматриваемых в данной книге.
Основное предназначение настоящей книги — помочь вам понять С#. Вы не сможете создать, например, красивую трехмерную игру без знания языка С#.
Создание шаблона консольного приложения
Описанные далее действия предусматривают использование Visual Studio. Если вы работаете не в Visual Studio, а в другой среде программирования, то должны обратиться к ее документации либо просто ввести исходный текст в вашей сре де разработки С#.
Создание и с х о д н о й программы
Выполните следующие шаги для создания консольного приложения С#.
1. Воспользуйтесь командой меню File^New^Project для формирования но
вого проекта.
Visual Studio откроет окно с пиктограммами, представляющими различные типы приложений, которые вы можете создать.

2. Выберите в окне New Project пиктограмму Console Application и щелкни
те на ней.
Убедитесь, что в панели Project T y p e s вы выбрали Visual С# и Windows, иначе Visual Studio может создать неверный проект — например, приложения на язы ке программирования Visual Basic или Visual С++. Затем щелкните на пикто
грамме Console Application в панели Templates.
Visual Studio требует создания проекта перед тем, как вы сможете начать вводить исходный текст вашей программы. Проект представляет собой что-то вроде кор зины, в которой хранятся все файлы, необходимые для разработки программы. Когда вы даете компилятору задание построить программу, он пересматривает эту корзину в поисках файлов, требуемых для сборки программы.
По умолчанию для вашего первого консольного приложения будет предложено имя C o n s o l e A p p l i c a t i o n l , но в этот раз измените его на ConsoleAppTem- p l a t e . В последующих главах книги вы сможете открывать шаблон, сохранять его под новым именем и сразу иметь все необходимое для начала работы.
По умолчанию место для хранения проектов находится в папке, спрятанной глу боко в папке My Documents. Лично я предпочитаю размещать свои программы не там, где меня заставляют, а там, где мне хочется. В главе 1, "Создание вашей первой Windows-программы на С#", было показано, как изменить место хранения проектов, предлагаемое по умолчанию, на С: \C#Programs (если вы хотите уп ростить себе работу с этой книгой).
2. Щелкните на кнопке ОК.
Немного пошуршав диском, Visual Studio сгенерирует файл Program, c s . (Если вы посмотрите в окно Solution Explorer, то увидите и другие файлы. Пока просто игнорируйте их существование. Если окно Solution Explorer отсутствует на экра не, его можно вызвать командой ViewOSolution Explorer.) Расширение исход ных файлов С # — .CS. Имя P r o g r a m — это имя по умолчанию, присваиваемое файлу программы.
Содержимое вашего первого консольного приложения выглядит следующим образом: u s i n g . . .
namespace ConsoleAppTemplate
{
c l a s s Program
{
s t a t i c v o i d M a i n ( s t r i n g [ ] a r g s )
{
}
I
Вдоль левой границы окна вы увидите несколько маленьких плюсов (+) и ми нусов (-) в квадратиках. Щелкните на знаке + возле u s i n g . . .. Этим вы от кроете область кода — эта весьма удобная возможность Visual Studio позволя ет уменьшать неразбериху на экране, сворачивая области кода и пряча их долой с глаз программиста (но не компилятора!). После раскрытия области кода вы увидите такие директивы:
48 |
Часть I. Создание ваших первых программ на С# |

using |
System; |
using |
System. C o l l e c t i o n s . G e n e r i c ; |
using |
S y s t e m . T e x t ; |
Области кода помогают сфокусироваться на коде, с которым вы работаете, скрывая код, который в данный момент не представляет интерес. Некоторые блоки кода, такие как блок пространств имен, блок классов, методов и т.п., получают значки + / - автома тически, без директивы # r e g i o n . Вы можете включить в исходный текст собственные сворачиваемые области, добавляя директиву # r e g i o n над интересующей частью кода, ко
торую хотите иметь возможность сворачивать, и |
# e n d r e g i o n после нее. Это позволит |
дать имя вашей области, например, что-то вроде |
P u b l i c methods. Обратите внимание, |
что такие имена могут включать пробелы. Кроме того, области могут быть вложены одна в другую (еще одно преимущество над Visual Basic), но не могут перекрываться.
В настоящий момент вам нужна только одна директива u s i n g System. Можно уб рать остальные; если вам будет не хватать какой-то из них, компилятор не преминет со общить об этом.
Пробная поездка
Чтобы преобразовать исходный текст программы на С# в выполнимую программу, воспользуйтесь командой меню Build^Build ConsoleAppTemplate. Visual Studio отве тит следующим сообщением:
-Build |
s t a r t e d : |
P r o j e c t : ConsoleAppTemplate, |
C o n f i g u r a t i o n : |
||||
Debug Any CPU |
- |
|
|
|
|
||
Csc.exe |
/ n o c o n f i g |
/nowarn |
(and much |
more) |
|
||
Compile |
complet e |
-- |
0 |
e r r o r s , 0 |
warning s |
|
|
ConsoleAppTemplate |
- > |
С:\C#Programs\ . . . |
(and |
m o r e ) = = B u i l d : |
|||
1 |
succeede d |
or u p - t o - d a t e , |
0 f a i l e d , |
0 skipped= = |
|||
Главное во всем этом — 1 |
s u c c e e d e d в последней строке. |
Это общее правило в программировании: "succeeded" — это хорошо, "failed" — плохо.
Для запуска программы воспользуйтесь командой меню D e b u g s Start W i t h o u t D e bugging. Программа выведет на экран черное консольное окно и тут же завершится. По хоже, что она просто ничего не делает. Кстати, так оно и есть на самом деле. Шаблон — это всего лишь пустая оболочка.
Создание реального консольного приложения
Отредактируйте файл Program. c s , чтобы он выглядел следующим образом: using System;
namespace ConsoleAppTemplate { // Фигурные скобки
Глава 2. Создание консольного приложения наС# |
49 |

// Класс Program — объект, содержащий наш код p u b l i c c l a s s Program
{
// |
Это |
- |
начало программы |
|
// |
Каждая |
программа имеет |
метод Main() |
|
s t a t i c |
v o i d M a i n ( s t r i n g [ ] |
args) |
{
// Немного кода, чтобы программа хоть что - то делала
//Приглашение ввести имя пользователя
Console . WriteLine("Пожалуйста, введите ваше имя:") ;
// Считывание |
вводимого имени |
s t r i n g sName = |
C o n s o l e . R e a d L i n e О ; |
//Приветствие пользователя с использованием введенного имени Console . WriteLine("Добрый день, " + sName);
//Ожидание подтверждения пользователя
Console.WriteLine("Нажмите <Enter> для " + "завершения программы...");
|
C o n s o l e . R e a d ( ) ; |
||
|
// |
Код Main() |
на этом заканчивается |
} |
// |
Конец функции Main() |
|
} // |
Конец класса |
Program |
}// Конец пространства имен ConsoleAppTemplate
Не волнуйтесь о тексте, находящемся в программе после двойной или тройной I косой черты (// или / / / ) , и не беспокойтесь, если вы введете пару лишних I пробелов или пустых строк. Однако обращайте внимание на строчные и про- I писные буквы.
Для того чтобы превратить исходный текст из |
файла P r o g r a m . c s в выполнимую I |
программу C o n s o l e A p p T e m p l a t e . e x e , примените |
команду меню Builds Build Con |
soleAppTemplate.
Чтобы запустить программу |
из Visual Studio |
2005, воспользуйтесь командой |
меню |
I |
||
D e b u g ^ S t a r t Without Debugging. При этом вы увидите черное консольное окно, в ко- |
| |
|||||
тором будет выведено приглашение ввести ваше имя (вам может потребоваться активи- |
1 |
|||||
зировать окно, щелкнув на нем мышью). После того как вы введете свое имя, программа |
I |
|||||
поприветствует вас и выведет надпись Нажмите |
<Enter> для |
завершения |
про- |
| |
||
граммы.... Нажатие клавиши <Enter> приведет к закрытию окна. |
|
|
|
|
||
Эту же программу можно выполнить из командной строки DOS. Для этого откройте |
|
|||||
окно DOS и введите следующее: |
|
|
|
|
|
|
CD \C#Programs\ConsoleAppTemplate\bin\Debug |
|
|
|
|
||
Теперь введите ConsoleAppTemplate для запуска программы. |
Вывод программы |
|
||||
на экран будет точно таким же, как только что описано. Вы можете также перейти в пап |
|
|||||
ку \C#Programs\ConsoleAppTemplate\bin\Debug в Проводнике Windows и за |
|
|||||
пустить программу двойным щелчком на файле |
ConsoleAppTemplate . е х е . |
|
|
|
||
Для того чтобы открыть окно DOS, попробуйте воспользоваться командой ме |
|
|||||
ню T o o l s ' ^ C o m m a n d |
Window. Если эта команда недоступна в вашем |
меню |
|
|||
Visual Studio Tools, |
воспользуйтесь командой меню Starts Ail Programs 1 ^ |
|
||||
Microsoft Visual Studio 2005<=>Visual Studio ToolsoVisual Studio 2005 |
C o m |
|||||
mand Prompt. |
|
|
|
|
|
|
50 |
Часть I. Создание ваших первых программ |
на |
С# |
|

В последующих подразделах будет рассмотрено, как работает созданное консольное приложение.
Схема программы
Базовая схема всех консольных приложений начинается со следующего кода:
using |
System; |
using |
S y s t e m . C o l l e c t i o n s . G e n e r i c ; |
using |
System.Text; |
namespace ConsoleAppTemplate
Программа начинает выполнение с первой строки, идущей после названия функции Main (), и заканчивается ее закрывающей фигурной скобкой. Пока что это все, что можно сказать по этому поводу.
Список директив u s i n g может находиться непосредственно до или после строки namespace ConsoleAppTemplate {. Порядок не имеет значения. В своем прило жении вы можете использовать множество разных вещей из .NET. О том, что такое про странство имен и зачем нужна директива u s i n g , будет рассказано в одной из дополни тельных глав.
Комментарии
Шаблон содержит массу строк, к которым добавляются другие строки, выглядящие следующим образом:
// Стартовая |
т о ч к а программы |
public s t a t i c |
v o i d M a i n ( s t r i n g [ ] a r g s ) |
Первую строку этого фрагмента С# игнорирует — это строка комментария.
Любая строка, начинающаяся с символов // или / / / , представляет собой обычный текст, предназначенный для человека и полностью игнорируемый С#. Пока что / / и / / / рассматриваются как эквивалентные символы начала комментария.
Зачем включать в программу строки, которые будут проигнорированы компилято ром? Потому что комментарии помогают понять текст программы. Исходный текст — не
Глава 2. Создание консольного приложения на С# |
51 |