
- •Основы программирования на языке с#
- •Структура программы
- •Типы данных в c#
- •Переменные и константы
- •Управляющие конструкции
- •If (условие) действие;
- •Комментарии
- •Int count; // Эта переменная хранит количество элементов
- •Массивы
- •Исключения
- •Среда Visual Studio
- •Общие сведения об основных понятиях платформы .Net Framework
- •Контейнеры: проекты и решения
- •Типы и расширения файлов в Visual Studio для с#
- •Переходы в рамках интегрированной среды разработки
- •Типы окон и операции над ними
- •Элементы управления
- •Панель элементов
- •Окно "Свойства"
- •Создание приложений Windows Forms
- •Операции над проектами Windows
- •В результате откроется окно Сохранить проект.
- •Работа с формами
- •Создание формы Windows Forms
- •Настройка формы
- •Просмотр кода для формы
- •Создание глобальной переменной класса Form
- •Переименование формы
- •Установка расположения форм Windows Forms на экране
- •Выбор начальной формы в приложении Windows
- •Настройка размера формы Windows Forms
- •Добавление фоновых изображений в формы Windows Forms.
- •Отображение модальных и немодальных форм Windows Forms
- •Создание прозрачных форм Windows Forms
- •Изменение границ формы Windows Forms с помощью конструктора
- •Переход между формами
- •Cкрытие и закрытие форм
- •Работа с элементами управления Windows Forms
- •Добавление элементов управления в формы Windows Forms
- •Изменение размера элементов управления в формах Windows Forms
- •Определение текста, отображаемого элементом управления Windows Forms
- •Определение клавиш доступа для элементов управления Windows Forms
- •Добавление элементов управления, для которых не существует пользовательского интерфейса, в формы Windows Forms
- •Закрепление элементов управления в формах Windows Forms
- •Выравнивание нескольких элементов управления в формах Windows Forms
- •Обработка события клавиши на элементе управления
- •Обращение к элементу управления на другой форме
- •Привязка элементов управления в формах Windows Forms
- •Элементы управления
- •Button – кнопка)
- •Надпись – Label
- •Поле ввода TextBox
- •Чтобы выделить текст программными средствами:
- •Панель Panel
- •Таймер Timer
- •Переключатель CheckBox
- •Переключатель RadioButton
- •Группа объектов GroupBox
- •Списки ComboBox
- •Рисунки PictureBox
- •Чтобы задать рисунок программными средствами задайте свойство Image при помощи метода FromFile класса Image, например:
- •Массив рисунков ImageList
- •Программное меню MenuStrip
- •Синхронизация меню на разных формах
- •Создание списка в окне интерфейса mdi с помощью MenuStrip
- •Блокирование доступа к элементам меню ToolStripMenuItem
- •Скрытие объектов ToolStripMenuItem
- •Контекстное меню ContextMenu
- •Привязка контекстного меню к элементу управления.
- •Панель инструментов ToolStrip
- •Строка состояния StatusStrip
- •Размер таблицы
- •Интерфейс таблицы
- •Диалоговые окна OpenFileDialog и SaveFileDialog
- •Работа с цветами ColorDialog
- •Шрифты FontDialog
- •Счетчик DomainUpDown
- •Счетчик NumericUpDown
- •Индикатор процесса ProgressBar
- •Текстовый редактор RichTextBox
- •Элемент управления Windows Forms RichTextBox позволяет записывать отображаемые в нем данные в одном из следующих форматов:
- •Вкладки TabControl
- •Чтобы добавить новую вкладку:
- •Календарь MonthCalendar
- •Браузер WebBrowser
- •Диалоговое окно MessageBox
- •Создание графических объектов
- •Методы класса Graphics
- •Примеры построения графических объектов
- •Кривая Безье
- •Построение треугольника в этом примере создадим код для рисования треугольника. Координаты треугольника создаются случайным образом: Чтобы создать треугольник:
- •Создание графика функции в этом примере создадим код для построения графика функции на интервале .
- •Чтобы построить график функции необходимо:
- •Диаграммы
- •Установка компонента по работе с диаграммами
- •Основные методы по работе с компонентом zedGraphControl
- •Примеры построения диаграмм
- •Создание приложений на языке Visual c# в среде программирования Visual Studio Учебное пособие
- •665709, Братск, ул.Макаренко,40
-
Комментарии
В C# используется два типа комментирования: комментирование блока текста и комментирование строки.
Комментирование блока текста
Чтобы вставить блочный (многострочный комментарий), текст комментария обрамляется символами: /* комментарий */, например:
/* Эта переменная хранит количество элементов */
int count;
Комментирование строки текста
Чтобы закомментировать строку текста (всю или часть) необходимо перед началом комментария поставить символы //, например:
Int count; // Эта переменная хранит количество элементов
Внимание.
На панели инструментов существуют
кнопки:
– комментирование выделенного фрагмента
и
– раскомментирование выделенного
фрагмента.
-
Массивы
В C# имеется три основных типа массивов: одномерные, многомерные и неровные(jagged):
-
С одномерными массивами все как обычно:
Декларация.
тип[] имя_массива = new тип[длина]
Пример:
int[] A = new int[10];
int[] A = {1, 2, 3, 4, 5};
Доступ. Доступ к элементам производится по номеру элемента (индексу):
Имя_массива[№ элемента]
Пример:
int[] A = new int[10];
A[4]=3;
int x=A[4]*2+1;
Внимание. Элементы нумеруются индексами от 0 до N - 1, где N - размер массива.
-
Многомерные массивы представляют собой многомерные кубы значений. Элементы таких массивов идентифицируются набором индексов - "координат" в многомерном пространстве. Каждое измерение имеет свою размерность, не зависящую от других.
Декларация. При декларации массива размерности его измерений указываются через запятую:
тип[] имя_массива = new тип[длина1,длина2]
Пример:
int[,] А = new int[10, 20];
int[,] В = {{1, 2}, {3, 4}};
Доступ. Доступ к элементам производится с помощью оператора [], в котором индексы также указываются через запятую:
Имя_массива[№строки, №столбца]
Пример:
int[,] A = new int[10,14];
A[3,4]=3;
int x=A[3,4]*2+1;
Внимание. Элементы нумеруются наборами индексов, каждый из которых может принимать значение от 0 до N - 1, где N - размер соответствующего измерения массива.
-
Неровные (jagged) массивы - это, по сути, массивы массивов.
Декларация. При декларации неровного массива одна из его размерностей является константой, другая оставляется пустой:
тип имя_массива[][] = new тип[длина1][]
или
тип имя_массива[][] = new тип[][длина2]
Пример:
int А[][] = new int[2][];
А[0] = new int[4];
А[1] = new int[20];
Доступ. Доступ к элементам производится с помощью операторов [], прописываемых подряд для каждого измерения со своим индексом без запятых:
Имя_массива[№строки][№столбца]
Пример:
int element = array[0][1];
Внимание. Неровные массивы похожи на многомерные, но их размеры могут различаться даже в одном измерении. В приведенном примере существует элемент А[1][15], но не существует элемента А[0][15].
-
Исключения
Исключения служат для обработки ошибок. Исключения были придуманы больше 15 лет назад, стандартный синтаксис исключений берет свое начало от C++.
Допустим, в некотором методе случается ошибка. Что делать? Можно, конечно, прервать процесс без объяснений, но это не является корректным решением, т.к. метод, в котором возникла ошибка, ничего не знает об окружении, в котором он выполняется и, стало быть, не вполне компетентен в выборе стратегии в нештатной ситуации. Правильным решением является выдача сообщения вызывающему методу. В языках без поддержки исключений использовались коды ошибок. Метод (функция) завершался, возвращая "особенное" значение, которое трактовалось как ошибочное. Такой подход является очень неудобным в силу сложности передачи всей информации об ошибке в одном числе.
Исключения в этом смысле стали панацеей. Идея очень проста: если в каком-то методе происходит ошибка, то создается объект, описывающий ее, и генерируется исключение на его основе. При генерации исключения прекращается выполнение текущего блока и идет возврат на более высокий уровень. На нем исключение может быть "поймано" и обработано. Если оно не обрабатывается на более высоком уровне, идет переход еще выше и т.д. пока процесс передачи исключения не дойдет до системного вызова, в котором все исключения обрабатываются.
Синтаксис исключения:
try
{
блок команд, в котором может возникнуть ошибка
}
[catch [(тип_исключения имя_исключения)]
{
блок обработки исключения
}]
[finally
{
команды, которые выполняются в любом случае
}]
Схема работы такой конструкции очень проста - если в блоке try происходит исключение, то идет переход на блок catch и ему это исключение передается в качестве параметра. В любом случае (произошло исключение или нет) в конце вызывается блок команд finally.
Создание собственного исключения:
Исключение создается с помощью команды try, которой передается объект типа Exception, который содержит информацию об исключении. Таким образом, в блоке try исключения могут возникнуть двумя способами - непосредственный вызов команды throw или необработанное исключение в одном из вызываемых методов.
Пример:
public static double Calculate(double f )
{
if (d == 0)
throw new Exception("Функция не определена в 0");
return 1 / d;
}
public static void Main()
{
try
{
double d1=Calculate(2);
double d2=Calculate(0);
double d3=Calculate(1);
}
catch (Exception e)
{
label1.Text="Ошибка: "+e;
}
}
}
При различных типах исключения можно производить различные действия. Для этого используется несколько блоков catch подряд. При этом вызывается первый блок, чей тип исключения соответствует типу пришедшего исключения:
try
{
Calculate(х);
}
catch (DivisionByZeroException e)
{
label1.Text="Деление на ноль"+e;
}
catch (OverflowException e)
{
…label1.Text="Неверная область определения "+e;
}
catch (Exception e) // Обработка остальных типов исключения
{
label1.Text="Ошибка: "+e;}