Объектно-ориентированное программирование VisualC#

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лист замечаний

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Содержание

 

Введение

Язык С# как средство обучения программированию обладает рядом несомненных достоинств. Он хорошо организован, строг, большинство его конструкций логичны и удобны. Развитые средства диагностики и редактирования кода делают процесс программирования приятным и эффективным. Мощная библиотека классов платформы .NET берет на себя массу рутинных операций, что дает возможность решать более сложные задачи, используя готовые «строительные блоки». Все это позволяет расценивать С# как перспективную замену языков Паскаль, BASIC и С++ при обучении программированию. Немаловажно, что С# является не учебным, а профессиональным языком, предназначенным для решения широкого спектра задач, и в первую очередь — в быстро развивающейся области создания распределенных приложений. Поэтому базовый курс программирования, построенный на основе языка С#, позволит студентам быстрее стать востребованными специалистами-профессионалами. Мощь языка С# имеет и оборотную сторону: во-первых, он достаточно требователен к ресурсам компьютера, во-вторых, для осмысленного написания простейшей программы, вычисляющей, «сколько будет дважды два», требуется изучить достаточно много материала, но многочисленные достоинства языка и платформы .NET перевешивают все недостатки.

Принимая во внимание все выше перечисленное, объектом  данной курсовой работы является объектно-ориентированное программирование.

Предмет – интегрированная среда разработки VisualC#.

Цель: изучение объектно-ориентированного языка программирования VisualC#.

Для достижения цели курсовой работы требуется решение следующих задач:

    1. изучение литературы по объектно-ориентированному программированию;
    2. составление и решение задач по программированию в среде VisualC#;
    3. изучение основных визуальных компонентов среды VisualC#.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Объектно-ориентированное программирование

 

Важнейшим шагом на пути к совершенствованию языков программирования стало появление объектно-ориентированного подхода к программированию (или, сокращенно, ООП) и соответствующего класса языков.

При объектно-ориентированном подходе программа представляет собой описание объектов, их свойств (или атрибутов), совокупностей (или классов), отношений между ними, способов их взаимодействия и операций над объектами (или методов).

При создании объектно-ориентированной программы предметная область представляется в виде совокупности объектов. Выполнение программы состоит в том, что объекты обмениваются сообщениями. Это позволяет использовать при программировании понятия, более адекватно отражающие предметную область.

Сложность адекватной (непротиворечивой и полной) формализации объектной теории порождает трудности тестирования и верификации созданного программного обеспечения. Пожалуй, это обстоятельство является одним из самых существенных недостатков объектно-ориентированного подхода к программированию.

Наиболее известным примером объектно-ориентированного языка программирования является язык C++, развившийся из императивного языка С. Его прямым потомком и логическим продолжением является язык С#, который изучается в данной работе.

Переход от структурно-процедурного подхода к объектно-ориентированному программированию, подобно переходу от низкоуровневых языков программирования к языкам высокого уровня, требует значительных затрат на обучение. Естественно, что платой за это является повышение производительности труда программистов при проектировании и реализации программного обеспечения. Другое преимущество ООП перед императивным подходом – более высокий процент повторного использования уже разработанного программного кода.

При этом в отличие от предыдущих подходов к программированию, объектно-ориентированный подход требует глубокого понимания основных принципов, или, иначе, концепций, на которых он базируется. К числу основополагающих понятий ООП обычно относят абстракцию данных, наследование, инкапсуляцию и полиморфизм.

В объектно-ориентированном программировании каждый объект представляет собой принципиально динамическую сущность, т.е. изменяется в зависимости от времени (а также от воздействия внешних по отношению к нему факторов). Иначе говоря, объект обладает тем или иным образом поведения.

Важным свойством объекта является его обособленность. Детали реализации объекта, то есть внутренние структуры данных и алгоритмы их обработки, скрыты от пользователя объекта и недоступны для непреднамеренных изменений. Объект используется через его интерфейс — совокупность правил доступа. Скрытие деталей реализации называется инкапсуляцией (от слова «капсула»). Ничего сложного в этом понятии нет: ведь и в обычной жизни мы пользуемся объектами через их интерфейсы.

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

Итак, к основным свойствам инкапсуляции относятся следующие возможности:

  • совместное хранение данных и функций (т.е. свойств и методов) внутри объекта;
  • сокрытие внутренней информации от пользователя (что обеспечивает большую безопасность приложения);
  • изоляция пользователя от особенностей реализации (что обеспечивает независимость от машины и потенциально дружественный интерфейс приложений).

Другой фундаментальной составляющей концепции объектно-ориентированного программирования является интуитивно ясное понятие наследования.

В неформальной постановке под наследованием понимается свойство того или иного объекта, который является производным от некоего базового, сохранять поведение (а именно, атрибуты и операции над ними), характерное для родительского объекта.

С точки зрения языков программирования понятие наследования означает применимость всех или лишь некоторых свойств и методов базового (или родительского) класса для всех классов, производных от него. Кроме того, сохранение свойств и методов базового класса должно обеспечиваться и для всех конкретизаций (т.е. конкретных объектов) любого производного класса.

Наследование является мощнейшим инструментом ООП и применяется для следующих взаимосвязанных целей:

  • исключения из программы повторяющихся фрагментов кода;
  • упрощения модификации программы;
  • упрощения создания новых программ на основе существующих.

Кроме того, только благодаря наследованию появляется возможность использовать объекты, исходный код которых недоступен, но в которые требуется внести изменения.

Наследование позволяет создавать иерархии объектов. Иерархия представляется в виде дерева, в котором более общие объекты располагаются ближе к корню, а более специализированные — на ветвях и листьях. Наследование облегчает использование библиотек объектов, поскольку программист может взять за основу объекты, разработанные кем-то другим, и создать наследников с требуемыми свойствами. Объект, на основании которого строится новый объект, называется родительским объектом, объектом-предком, базовым классом, или суперклассом, а унаследованный от него объект — потомком, подклассом, или производным классом.

ООП позволяет писать гибкие, расширяемые и читабельные программы. Во многом это обеспечивается благодаря полиморфизму, под которым понимается возможность во время выполнения программы с помощью одного и того же имени выполнять разные действия или обращаться к объектам разного типа. Чаще всего понятие полиморфизма связывают с механизмом виртуальных методов. Подводя итог сказанному, сформулирую достоинства ООП.

  • использование при программировании понятий, близких к предметной области;
  • возможность успешно управлять большими объемами исходного кода благодаря инкапсуляции, то есть скрытию деталей реализации объектов и упрощению структуры программы;
  • возможность многократного использования кода за счет наследования;
  • сравнительно простая возможность модификации программ;
  • возможность создания и использования библиотек объектов.

Эти преимущества особенно явно проявляются при разработке программ большого объема и классов программ. Однако ничто не дается даром: создание объектно-ориентированной программы представляет собой весьма непростую задачу, поскольку требует разработки иерархии объектов, а плохо спроектированная иерархия может свести к нулю все преимущества объектно-ориентированного подхода.

Кроме того, идеи ООП не просты для понимания и в особенности для практического применения. Чтобы эффективно использовать готовые объекты из библиотек, необходимо освоить большой объем достаточно сложной информации. Неграмотное же применение ООП способно привести к созданию излишне сложных программ, которые невозможно отлаживать и усовершенствовать.

 

1.1 История языка Visual C#

История основной ветви языков программирования, которая привела к появлению C#, восходит к 60-м годам, а именно, ко времени возникновения языка Visual Basic . Последний является типичным представителем ранних императивных языков программирования. Язык Visual Basic был придуман в 1963 году творческим коллективом разработчиков, основным создателем языка принято считать К. Томпсона из Технологического университета Массачусетса (Ken Thompson, MIT). Основной целью разработки языка была реализация операционной системы UNIX. Уже существовавший язык PL/I, применявшийся в то время для мэйнфреймов производства компании IBM, был достаточно громоздким и меньше подходил для поставленной задачи, чем новое, оригинальное решение ученых-практиков.

Следующим шагом в "алфавите" языков программирования, ведущем к языку C#, стал язык C, который был изобретен на основе языка B в 1972 году. Авторами нового языка программирования стали К.Томпсон и Д.Ритчи (Dennis Ritchie), которые работали в исследовательской лаборатории компании AT&T (AT&T Bell Telephone Laboratories). В варианте C язык B расширился за счет явного использования типов, структур и ряда новых операций. Дальнейшее развитие языка происходило в той же организации. И снова примерно через 10 лет, в 1984 году, Б. Страуструп (Bjarne Stroustrup, Bell Labs) выступил с проектом языка С++ – ООП-расширения языка C, в котором вводится понятие класса как объекта данных.

Название C++ для нового языка предложил Р.Маскитти (Rics Mascitti, Bell Labs).

Наконец, уже в 2000 году, то есть более чем через 15 лет, корпорация Microsoft выпустила в свет C++ нового поколения под названием C# ("Си шарп"), основным постулатом которого является высказывание: "всякая сущность есть объект". Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода.

Создателем языка является сотрудник Microsoft Андреас Хейлсберг. Он стал известным в мире программистов задолго до того, как пришел в Microsoft. Хейлсберг входил в число ведущих разработчиков одной из самых популярных сред разработки - Delphi. В Microsoft он участвовал в создании версии Java, так что опыта в написании языков и сред программирования ему не занимать. Как отмечал сам Андреас Хейлсберг, C# создавался как язык компонентного программирования, и в этом одно из главных достоинств языка, направленное на возможность повторного использования созданных компонентов.

Как уже отмечалось, язык программирования C# объединил лучшие черты целого ряда предшественников. Кроме упомянутой ранее ветви языков B-C-C++, необходимо указать еще несколько знаковых для настоящего времени языков программирования, а именно, Java и Visual Basic.

Несмотря на весьма существенные различия между компонентной объектной моделью COM (основного стандарта Microsoft для компонентного проектирования и реализации программного обеспечения) и моделью Java Beans, базовым стандартом Sun Microsystems для компонент (зависимой от языка реализации), язык программирования C# имеет довольно много общего с языком Java. Естественно, немало черт язык программирования C# унаследовал и от своего предшественника, созданного корпорацией Microsoft, языка Visual Basic.

Как уже отмечалось, язык программирования C# основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода.

От своего прямого предшественника, языка программирования C++, языком C# унаследованы следующие механизмы: "перегруженные" операторы, небезопасные арифметические операции с плавающей точкой, а также ряд других особенностей синтаксиса. Но, несмотря на то, что целый ряд конструктивных синтаксических механизмов и особенностей реализации унаследован языком программирования C# от прародителей (C++, Visual Basic и Java), возможности этого нового языка программирования не ограничиваются суммой возможностей его исторических предшественников.

К числу принципиально важных решений, которые реализованы корпорацией Microsoft в языке программирования C#, можно отнести следующие:

  • компонентно-ориентированный подход к программированию (который характерен и для идеологии Microsoft .NET в целом);
  • свойства как средство инкапсуляции данных (характерно также в целом для ООП);
  • обработка событий (имеются расширения, в том числе в части обработки исключений, в частности, оператор try);
  • унифицированная система типизации (соответствует идеологии Microsoft .NET в целом);
  • делегаты (delegate – развитие указателя на функцию в языках C и C++);
  • индексаторы (indexer – операторы индекса для обращения к элементам класса-контейнера);
  • перегруженные операторы (развитие ООП);
  • оператор foreach (обработка всех элементов классов-коллекций, аналог Visual Basic);
  • механизмы boxing и unboxing для преобразования типов;
  • атрибуты (средство оперирования метаданными в COM-модели);
  • прямоугольные массивы (набор элементов с доступом по номеру индекса и одинаковым количеством столбцов и строк).

Название языка вообще-то следовало бы произносить как «Си-диез». Компания Microsoft неоднократно подчеркивала, что, несмотря на некоторое различие в начертании и коде символов «решетки» и «диеза», в названии языка имеется в виду именно музыкальный диез и обыгрывается тот факт, что символом С в музыке обозначается нота «до». Таким образом, создатели языка вложили в его название смысл «на полтона выше С». Однако в нашей стране укоренилась калька с английского — «Си-шарп».

 

1.2 Среда Visual Studio.NET

 

Среда разработки Visual Studio.NET предоставляет мощные и удобные средства написания, корректировки, компиляции, отладки и запуска приложений, использующих .NET-совместимые языки. Корпорация Microsoft включила в платформу средства разработки для четырех языков: С#, VB.NET, С++ и J#.

Платформа .NET является открытой средой. Это значит, что компиляторы для нее могут поставляться и сторонними разработчиками. К настоящему времени разработаны десятки компиляторов для .NET, например, Ada, COBOL, Delphi, Eiffel, Fortran, Lisp, Oberon, Perl и Python.

Bсе .NET-совместимые языки должны отвечать требованиям общеязыковой спецификации (Common Language Specification, CLS), в которой описывается набор общих для всех языков характеристик. Это позволяет использовать для разработки приложения несколько языков программирования и вести полноценную межъязыковую отладку. Все программы независимо от языка используют одни и те же базовые классы библиотеки .NET.

Приложение в процессе разработки называется проектом. Проект объединяет все необходимое для создания приложения: файлы, папки, ссылки и прочие ресурсы. Среда Visual Studio.NET позволяет создавать проекты различных типов, например:

  • Windows-приложение использует элементы интерфейса Windows, включая формы, кнопки, флажки и пр.;
  • консольное приложение выполняет вывод «на консоль», то есть в окно командного процессора;
  • библиотека классов объединяет классы, которые предназначены для использования в других приложениях;
  • веб-приложение — это приложение, доступ к которому выполняется через браузер (например, Internet Explorer) и которое по запросу формирует вебстраницу и отправляет ее клиенту по сети;
  • веб-сервис — компонент, методы которого могут вызываться через Интернет.

В данной курсовой работе будут рассматриваться только консольные приложения и приложения Windows Forms.

Создание проекта. Основные окна среды.

Для создания проекта следует после запуска Microsoft Visual C# 2012 Express в главном меню выбрать команду Файл - Создать проект. В появившемся  диалоговом окне выбрать один из Установленных шаблонов Visual Studio. Например, консольное приложение. Примерный вид экрана приведен на рисунке 1.

В верхней части экрана располагается главное меню (с разделами Файл, Вид, Построение и т. д.) и панели инструментов. Панелей инструментов в среде великое множество, и если включить их все (Вид – Панели инструментов - … ) они займут половину экрана.

В нижней правой части экрана расположено окно свойств «Свойства». В окне свойств отображаются важнейшие характеристики выделенного элемента. Например, чтобы изменить имя файла, в котором хранится класс Classl, надо выделить этот файл в окне Обозреватель решений и задать в окне свойств новое значение свойства Имя файла (ввод заканчивается нажатием клавиши Enter).

Рисунок 1.

Основное пространство экрана занимает окно редактора, в котором располагается текст программы, созданный средой автоматически. Текст представляет собой каркас, в который программист добавляет код по мере необходимости.

Ключевые (зарезервированные) слова отображаются синим цветом, комментарии различных типов — серым и темно-зеленым, остальной текст — черным. Слева от текста находятся символы структуры: щелкнув на любом квадратике с минусом, можно скрыть соответствующий блок кода. При этом минус превращается в плюс, щелкнув на котором, можно опять вывести блок на экран. Это средство хорошо визуально структурирует код и позволяет сфокусировать внимание на нужных фрагментах.

Заготовка консольной программы

Рассмотрим каждую строку заготовки программы. Изучим принципы работы в оболочке:

using System;

namespace ConsoleApplicationl 1

{

      /// <summary>

    /// Summary description for Classl.

   /// </summary>

   class Classl

   {

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

static void Main(string[ ] args)

  {

//

// TODO: Add code to start application here

//

}

     }

}

Директива using System разрешает использовать имена стандартных классов из пространства имен System непосредственно (без указания имени пространства).

Ключевое слово namespace создает для проекта собственное пространство имен, названное по умолчанию ConsoleAppl icationl. Это сделано для того, чтобы можно было давать программным объектам имена, не заботясь о том, что они могут совпасть с именами в других пространствах имен.

Строки, начинающиеся с двух или трех косых черт, являются комментариями и предназначены для документирования текста программы.

С# — объектно-ориентированный язык, поэтому написанная на нем программа представляет собой совокупность взаимодействующих между собой классов. В нашей заготовке программы всего один класс, которому по умолчанию задано имя Classl. Описание класса начинается с ключевого слова class, за которым следуют его имя и далее в фигурных скобках — список элементов класса (его данных и функций, называемых также методами).

Фигурные скобки являются важным элементом синтаксиса. Каждой открывающей скобке соответствует своя закрывающая, которая обычно располагается ниже по тексту с тем же отступом. Эти скобки ограничивают блок, внутри которого могут располагаться другие блоки, вложенные в него, как матрешки. Блок может применяться в любом месте, где допускается отдельный оператор.

В данном случае внутри класса только один элемент — метод Main. Каждое приложение должно содержать метод Main — с него начинается выполнение программы. Все методы описываются по единым правилам.

Упрощенный синтаксис метода:

[ спецификаторы] тип имя метода ( [ параметры ] )

{

тело метода: действия, выполняемые методом

}

Таким образом, любой метод должен иметь тип, имя и тело, остальные части описания являются необязательными.

Запуск программы

Самый простой способ запустить программу — нажать клавишу F5 (или выбрать в меню команду Отладка – Начать отладку). Для того чтобы пронаблюдать ее спокойно, следует воспользоваться клавишами Ctrl+F5 (или выбрать в меню команду Отладка – Запуск без отладки).

После внесения изменений компилятор может обнаружить в тексте программы синтаксические ошибки. Он сообщает об этом в окне, расположенном в нижней части экрана.

 

1.3 Шаблон Windows-приложения

Создадим новый проект (Файл – Создать проект), выбрав шаблон Приложение Windows Form (рисунок 2). После более длительных раздумий, чем для консольного приложения, среда сформирует шаблон Windows-приложения. Первое отличие, которое бросается в глаза, — вкладка заготовки формы Form1.cs[Конструктор], расположенная в основной части экрана. Форма представляет собой окно и предназначена для размещения компонентов (элементов управления) — меню, текста, кнопок, списков, изображений и т.д.

Рисунок 2.

Среда создает не только заготовку формы, но и шаблон текста приложения. Перейти к нему можно, щелкнув, кнопкой мыши на файле Forml.cs и выбрав в контекстном меню команду Перейти к коду (рисунок 3).

Рисунок 3.

При этом откроется вкладка с кодом формы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

        }

    }

}

Приложение начинается с директив использования пространств имен библиотеки .NET. Для пустой формы, не содержащей ни одного компонента, необходимыми являются только две директивы:

using System;

using System.Windows.Forms;

Остальные директивы добавлены средой «на вырост». Пространство System.Windows.Forms содержит огромное Количество типов, являющихся строительными блоками Windows-приложений.

Продолжим рассмотрение кода программы. В нем описан класс Forml, производный от класса Form. Он наследует от своего предка множество элементов, которые мы рассмотрим в следующих разделах. В самом классе Forml описано новое закрытое поле components — контейнер для хранения компонентов, которые можно добавить в класс формы.

Процесс создания Windows-приложения состоит из двух основных этапов:

1. Визуальное проектирование, то есть задание внешнего облика приложения.

2. Определение поведения приложения путем написания процедур обработки событий.

Визуальное проектирование заключается в помещении на форму компонентов (элементов управления) и задании их свойств и свойств самой формы с помощью окна свойств и панели элементов (рисунок 4 и рисунок 5). Если его не видно, можно воспользоваться командой меню Вид - Окно свойств. Свойства отображаются либо в алфавитном порядке, либо с группируемыми по категориям. Способ отображения выбирается с помощью кнопок, расположенных в верхней части окна свойств.

 

Рисунок 4.                         Рисунок 5.

Самый простой способ размещения компонента — двойной щелчок на соответствующем значке палитры компонентов Панель элементов, при этом компонент помещается на форму. Затем компонент можно переместить и изменить его размеры с помощью мыши. Можно также сделать один щелчок на палитре и еще один щелчок в том месте формы, где планируете поместить компонент. В окне свойств отображаются свойства выбранного в данный момент компонента.

Определение поведения программы начинается с принятия решений, какие действия должны выполняться при щелчке на кнопках, вводе текста, выборе пунктов меню и т. д., иными словами, по каким событиям будут выполняться действия, реализующие функциональность программы.

Заготовка шаблона обработчика события формируется двойным щелчком на поле, расположенном справа от имени соответствующего события на вкладке «События» окна свойств, при этом появляется вкладка окна редактора кода с заготовкой соответствующего обработчика. Для каждого класса определен свой набор событий, на которые он может реагировать.

Для размещения компонента на форме необходимо выполнить три действия:

1. Создать экземпляр соответствующего класса.

2. Настроить свойства экземпляра, в том числе зарегистрировать обработчик событий.

3. Поместить экземпляр в коллекцию компонентов формы.

Прежде чем приступить к изучению форм и элементов управления, размещаемых на формах, необходимо рассмотреть их общего предка — класс Control.

 

2. Классы

2.1 Класс Control

Класс Control является базовым для всех отображаемых элементов, то есть элементов, которые составляют графический интерфейс пользователя, например кнопок, списков, полей ввода и форм. Класс Control реализует базовую функциональность интерфейсных элементов. Он содержит методы обработки ввода пользователя с помощью мыши и клавиатуры, определяет размер, положение, цвет фона и другие характеристики элемента. Для каждого объекта можно определить родительский класс, задав свойство Parent, при этом объект будет иметь, например, такой же цвет фона, как и его родитель.

Наиболее важные свойства класса Control перечислены в таблице:

Свойство

Описание

Anchor

Определяет, какие края элемента управления будут привязаны к краям родительского контейнера. Если задать привязку всех краев, элемент будет изменять размеры вместе с родительским

BackColor, Backgroundlmage, Font,ForeColor, Cursor

Определяют параметры отображения рабочей области формы: цвет фона, фоновый рисунок, шрифт, цвет текста, вид указателя мыши

Bottom, Right

Координаты нижнего правого угла элемента. Могут устанавливаться также через свойство Size

Top, Left

Координаты верхнего левого угла элемента. Эквивалентны свойству Location

Bounds

Возвращает объект типа Rectangle (прямоугольник), который определяет размеры элемента управления

ClientRectangle

Возвращает объект Rectangle, определяющий размеры рабочей области элемента

ContextMenu

Определяет, какое контекстное меню будет выводиться при щелчке на элементе правой кнопкой мыши

Dock

Определяет, у какого края родительского контейнера будет отображаться элемент управления

Location

Координаты верхнего левого угла элемента относительно верхнего левого угла контейнера, содержащего этот элемент, в виде структуры типа Point. Структура содержит свойства X и Y

Height, Width

Высота и ширина элемента

Size

Высота и ширина элемента в виде структуры типа Size. Структура содержит свойства Height и Width

Handle

Возвращает дескриптор элемента (уникальное целочисленное значение, сопоставленное элементу)

MouseButtons

Статическое свойство, проверяющее состояние клавиш мыши. Возвращает результат в виде объекта типа MouseButtons

Parent

Возвращает объект, родительский по отношению к данному (имеется в виду не базовый класс, а объект-владелец)

Region

Определяет объект Region, при помощи которого можно управлять очертаниями и границами элемента управления

Tablndex, TabStop

Используются для настройки последовательности перемещения с помощью клавиши Tab по элементам управления, расположенным на форме

Объектно-ориентированное программирование VisualC#