1224640
столько раз учителя, ученики и родители
посетили официальный сайт проекта «Инфоурок»
за прошедшие 24 часа
Добавить материал и получить бесплатное
свидетельство о публикации
в СМИ №ФС77-60625 от 20.01.2015
Инфоурок Информатика Другие методич. материалыИнформатика. Программирование в C#

Информатика. Программирование в C#

Проверен экспертом
IV Международный дистанционный конкурс «Старт» Идёт приём заявок Для дошкольников и учеников 1-11 классов 16 предметов ОРГВЗНОС 25 Р. ПОДАТЬ ЗАЯВКУ
Выберите документ из архива для просмотра:

Выбранный для просмотра документ Практическое задание1.docx

библиотека
материалов

ИНСТРУКЦИОННАЯ КАРТА

Тема: Разработка приложения, использующего кнопочные компоненты


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

Знать: следующие компоненты WindowsForm: кнопки (Button), метки (Label), специальные контейнеры, которые содержат другие элементы, элементы GroupBox, элементы управления списками: ListBox, ComboBox, текстовые элементы управления: TextBox, элементы для работ с датами: DateTimePicker.

Уметь: создавать форму, содержащую компоненты: Button, Label, GroupBox, ListBox, ComboBox. TextBox, DateTimePicker; создавать программу, которая будет создавать текстовый файл и копировать в него вводимые данные из формы.

Оснащение: ПК, ИК

!Электронный отчет по работе должен содержать:

  1. Проект, созданный в Visual Studio.

  2. Текстовый файл, содержащий ответы на контрольные вопросы


Теоретический материал

Окно сообщения MessageBox

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

Для вывода сообщения в классе MessageBox предусмотрен метод Show, который имеет различные версии и может принимать ряд параметров. Рассмотрим одну из наиболее используемых версий:

1

2

3

4

5

6

7

8

public static DialogResult Show(

    string text,

    string caption,

    MessageBoxButtons buttons,

    MessageBoxIcon icon,

    MessageBoxDefaultButton defaultButton,

    MessageBoxOptions options

)

Здесь применяются следующие параметры:

text: текст сообщения

caption: текст заголовка окна сообщения

buttons: кнопки, используемые в окне сообщения. Принимает одно из значений перечисления MessageBoxButtons:

  • AbortRetryIgnore: три кнопки Abort (Отмена), Retry (Повтор), Ignore (Пропустить)

  • OK: одна кнопка OK

  • OKCancel: две кнопки OK и Cancel (Отмена)

  • RetryCancel: две кнопки Retry (Повтор) и Cancel (Отмена)

  • YesNo: две кнопки Yes и No

  • YesNoCancel: три кнопки Yes, No и Cancel (Отмена)

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

icon: значок окна сообщения. Может принимать одно из следующих значений перечисления MessageBoxIcon:

  • Asterisk, Information: значок, состоящий из буквы i в нижнем регистре, помещенной в кружок

  • Error, Hand, S"X" на круге красного цвета.

  • Exclamation, Warning: значок, состоящий из восклицательного знака в желтом треугольнике

  • Question: значок, состоящий из вопросительного знака на периметре круга

  • None: значок у сообщения отсутствует

defaultButton: кнопка, на которую по умолчанию устанавливается фокус. Принимает одно из значений перечисления MessageBoxDefaultButton:

  • Button1: первая кнопка из тех, которые задаются перечислением MessageBoxButtons

  • Button2: вторая кнопка

  • Button3: третья кнопка

options: параметры окна сообщения. Принимает одно из значений перечисления MessageBoxOptions:

  • DefaultDesktopOnly: окно сообщения отображается на активном рабочем столе.

  • RightAlign: текст окна сообщения выравнивается по правому краю

  • RtlReading: все элементы окна располагаются в обратном порядке справа налево

  • ServiceNotification: окно сообщения отображается на активном рабочем столе, даже если в системе не зарегистрирован ни один пользователь

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

1

2

3

4

5

6

7

8

9

10

private void button1_Click(object sender, EventArgs e)

{

    MessageBox.Show(

        "Выберите один из вариантов",

        "Сообщение",

        MessageBoxButtons.YesNo,

        MessageBoxIcon.Information,

        MessageBoxDefaultButton.Button1,

        MessageBoxOptions.DefaultDesktopOnly);

}

hello_html_m31fffbc.png

ListBox

Элемент ListBox представляет собой простой список. Ключевым свойством этого элемента является свойство Items, которое как раз и хранит набор всех элементов списка.

Элементы в список могут добавляться как во время разработки, так и программным способом. В Visual Studio в окне Properties (Свойства) для элемента ListBox мы можем найти свойство Items. После двойного щелчка на свойство нам отобразится окно для добавления элементов в список:

hello_html_m65314b33.png

В пустое поле мы вводим по одному элементу списка - по одному на каждой строке. После этого все добавленные нами элементы окажутся в списке, и мы сможем ими управлять:

hello_html_936a56f.png

Программное управление элементами в ListBox

Добавление элементов

Итак, все элементы списка входят в свойство Items, которое представляет собой коллекцию. Для добавления нового элемента в эту коллекцию, а значит и в список, надо использовать метод Add, например: listBox1.Items.Add("Новый элемент");. При использовании этого метода каждый добавляемый элемент добавляется в конец списка.

Можно добавить сразу несколько элементов, например, массив. Для этого используется метод AddRange:

1

2

string[] countries = { "Бразилия", "Аргентина", "Чили", "Уругвай", "Колумбия" };

listBox1.Items.AddRange(countries);

Вставка элементов

В отличие от простого добавления вставка производится по определенному индексу списка с помощью метода Insert:

1

listBox1.Items.Insert(1, "Парагвай");

В данном случае вставляем элемент на вторую позицию в списке, так как отсчет позиций начинается с нуля.

Удаление элементов

Для удаления элемента по его тексту используется метод Remove:

1

listBox1.Items.Remove("Чили");

Чтобы удалить элемент по его индексу в списке, используется метод RemoveAt:

1

listBox1.Items.RemoveAt(1);

Кроме того, можно очистить сразу весь список, применив метод Clear:

1

listBox1.Items.Clear();

Доступ к элементам списка

Используя индекс элемента, можно сам элемент в списке. Например, получим первый элемент списка:

1

string firstElement = listBox1.Items[0];

Метод Count позволяет определить количество элементов в списке:

1

int number = listBox1.Items.Count();

Выделение элементов списка

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

  • SelectedIndex: возвращает или устанавливает номер выделенного элемента списка. Если выделенные элементы отсутствуют, тогда свойство имеет значение -1

  • SelectedIndices: возвращает или устанавливает коллекцию выделенных элементов в виде набора их индексов

  • SelectedItem: возвращает или устанавливает текст выделенного элемента

  • SelectedItems: возвращает или устанавливает выделенные элементы в виде коллекции

По умолчанию список поддерживает выделение одного элемента. Чтобы добавить возможность выделения нескольких элементов, надо установить у его свойства SelectionMode значение MultiSimple.

Чтобы выделить элемент програмно, надо применить метод SetSelected(int index, bool value), где index - номер выделенного элемента. Если второй параметр - value имеет значение true, то элемент по указанному индексу выделяется, если false, то выделение наоборот скрывается:

1

listBox1.SetSelected(2, true); // будет выделен третий элемент

Чтобы снять выделение со всех выделенных элементов, используется метод ClearSelected.

Событие SelectedIndexChanged

Из всех событий элемента ListBox надо отметить в первую очередь событие SelectedIndexChanged, которое возникает при изменении выделенного элемента:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

 

        string[] countries = { "Бразилия", "Аргентина", "Чили",  "Уругвай", "Колумбия" };

        listBox1.Items.AddRange(countries);

         

        listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;

    }

 

    void listBox1_SelectedIndexChanged(object sender, EventArgs e)

    {

        string selectedCountry = listBox1.SelectedItem.ToString();

        MessageBox.Show(selectedCountry);

    }

}

В данном случае по выбору элемента списка будет отображаться сообщение с выделенным элементом.

Элемент ComboBox

Элемент ComboBox образует выпадающий список и совмещает функциональность компонентов ListBox и TextBox. Для хранения элементов списка в ComboBox также предназначено свойство Items.

Подобным образом, как и с ListBox, мы можем в окне свойств на свойство Items и нам отобразится окно для добавления элементов ComboBox:

hello_html_m68375363.png

И как и с компонентом ListBox, здесь мы также можем программно управлять элементами.

Добавление элементов:

1

2

3

4

5

6

// добавляем один элемент

comboBox1.Items.Add("Парагвай");

// добавляем набор элементов

comboBox1.Items.AddRange(new string[] { "Уругвай", "Эквадор" });

// добавляем один элемент на определенную позицию

comboBox1.Items.Insert(1, "Боливия");

При добавлении с помощью методов Add / AddRange все новые элементы помещаются в конец списка. Однако если мы зададим у ComboBox свойство Sorted равным true, тогда при добавлении будет автоматически производиться сортировка.

Удаление элементов:

1

2

3

4

5

6

// удаляем один элемент

comboBox1.Items.Remove("Аргентина");

// удаляем элемент по индексу

comboBox1.Items.RemoveAt(1);

// удаляем все элементы

comboBox1.Items.Clear();

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

1

comboBox1.Items[0] = "Парагвай";

Настройка оформления ComboBox

С помощью ряда свойств можно настроить стиль оформления компонента. Так, свойство DropDownWidth задает ширину выпадающего списка. С помощью свойства DropDownHeight можно установить высоту выпадающего списка.

Еще одно свойство MaxDropDownItems позволяет задать число видимых элементов списка - от 1 до 100. По умолчанию это число равно 8.

Другое свойство DropDownStyle задает стиль ComboBox. Оно может принимать три возможных значения:

  • Dropdown: используется по умолчанию. Мы можем открыть выпадающий список вариантов при вводе значения в текстовое поле или нажав на кнопку со стрелкой в правой части элемента, и нам отобразится собственно выпадающий список, в котором можно выбрать возможный вариант

  • DropdownList: чтобы открыть выпадающий список, надо нажать на кнопку со стрелкой в правой стороне элемента

  • Simple: ComboBox представляет простое текстовое поле, в котором для перехода между элементами мы можем использовать клавиши клавиатуры вверх/вниз

hello_html_648b93ff.png

Событие SelectedIndexChanged

Наиболее важным событием для ComboBox также является событие SelectedIndexChanged, позволяющее отследить выбор элемента в списке:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

 

        comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;   

    }

 

    void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

    {

        string selectedState = comboBox1.SelectedItem.ToString();

        MessageBox.Show(selectedState);

    }

}

Здесь также свойство SelectedItem будет ссылаться на выбранный элемент.

Привязка данных в ListBox и ComboBox

Кроме прямого добавления элементов в коллекцию Items компонентов ListBox и ComboBox мы также можем использовать механизм привязки данных.

Привязка данных в ListBox и ComboBox реализуется с помощью следующих свойств:

  • DataSource: источник данных - какой-нибудь массив или коллекция объектов

  • DisplayMember: свойство объекта, которое будет использоваться для отображения в ListBox / ComboBox

  • ValueMember: свойство объекта, которое будет использоваться в качестве его значения

Рассмотрим пример.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

 

        List phones = new List

        {

            new Phone { Id=11, Name="Samsung Galaxy Ace 2", Year=2012},

            new Phone { Id=12, Name="Samsung Galaxy S4", Year=2013},

            new Phone { Id=13, Name="iPhone 6", Year=2014},

            new Phone { Id=14, Name="Microsoft Lumia 435", Year=2015},

            new Phone { Id=15, Name="Xiaomi Mi 5", Year=2015}

        };

 

        listBox1.DataSource = phones;

        listBox1.DisplayMember = "Name";

        listBox1.ValueMember = "Id";

 

        listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged;

    }

 

    void listBox1_SelectedIndexChanged(object sender, EventArgs e)

    {

        // получаем id выделенного объекта

        int id = (int)listBox1.SelectedValue;

 

        // получаем весь выделенный объект

        Phone phone = (Phone)listBox1.SelectedItem;

        MessageBox.Show(id.ToString() + ". " + phone.Name);

    }

}

class Phone

{

    public int Id { get; set; }

    public string Name { get; set; }

    public int Year { get; set; }

}

Запись в файл и StreamWriter

Для записи в текстовый файл используется класс StreamWriter. Свою функциональность он реализует через следующие методы:

  • Close: закрывает записываемый файл и освобождает все ресурсы

  • Flush: записывает в файл оставшиеся в буфере данные и очищает буфер.

  • Write: записывает в файл данные простейших типов, как int, double, char, string и т.д.

  • WriteLine: также записывает данные, только после записи добавляет в файл символ окончания строки

Рассмотрим запись в файл на примере:

hello_html_6a4e726b.png

Здесь сначала мы считываем файл в переменную text, а затем записываем эту переменную в файл, а затем через объект StreamWriter записываем в новый файл.

Класс StreamWriter имеет несколько конструкторов. Здесь мы использовали один из них: new StreamWriter(writePath, false, System.Text.Encoding.Default). В качестве первого параметра передается путь к записываемому файлу. Второй параметр представляет булевую переменную, которая определяет, будет файл дозаписываться или перезаписываться. Если этот параметр равен true, то новые данные добавляются в конце к уже имеющимся данным. Если false, то файл перезаписывается. И если в первом случае файл перезаписывается, то во втором делается дозапись в конец файла.

Третий параметр указывает кодировку, в которой записывается файл.


Практическая часть

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

  • фамилия и имя страхователя;

  • адрес (город, улица, дом, квартира)

  • пол страхователя;

  • срок страхования;

  • вид страхования.

Разработка формы пользователя. Форма пользователя с элементами управления для создания текстового файла должна иметь такой же вид, как на картинке:

hello_html_3b9b5f91.png


Для удобства ввода данных, кроме элементов Поле в форме предусмотрены: элемент Счетчик – для установки строка страхования; элемент Поле со списком – для ввода вида страхования. Предусмотрите элемент Надпись для вывода сообщения об ошибке, при не заполнении какого-либо поля ввода.

Текстовый файл должен создаваться в папке проекта Debug с именем Страхователи.txt. Пример текстового файла:

hello_html_m54bfaf24.png

Выполните следующие действия:

  1. Создайте форму пользователя и разместите в ней элементы управления.

  2. Элементам управления присвойте имена и свойства.

  3. Для процедуры обработки события Click кнопки Ok запишите код, который отвечает за копирование данных из полей в текстовый файл (Файл должен дозаписываться, а не перезаписываться). Если какое-либо поле не заполнено, внизу формы должна появиться надпись «Не все данные введены!». Если данные все введены, должно появиться сообщение MessageBox и все поля очищаются:

hello_html_m9ecfc1.png

  1. Для процедуры обработки события Click кнопки Отмена запишите код для закрывания формы.

  2. Запустите программу на выполнение. Проверьте работоспособность и, в случае необходимости, устраните ошибки в программе.

  3. Создайте папку Release.

  4. Сохраните проект на Колледжсервере в папке группы под своей фамилией.


Вопросы для контроля знаний

1. Какое свойство отвечает за вид и поведение границы и строки заголовка формы?

3. Что такое пользовательская форма?

4. Для чего используются списки?

5. Какие элементы поддерживают редактирование текста в C#?



Курс профессиональной переподготовки
Учитель информатики
Курс профессиональной переподготовки
Учитель математики и информатики
Найдите материал к любому уроку,
указав свой предмет (категорию), класс, учебник и тему:
также Вы можете выбрать тип материала:
ВНИМАНИЮ УЧИТЕЛЕЙ: хотите организовать и вести кружок по ментальной арифметике в своей школе? Спрос на данную методику постоянно растёт, а Вам для её освоения достаточно будет пройти один курс повышения квалификации (72 часа) прямо в Вашем личном кабинете на сайте "Инфоурок".

Пройдя курс Вы получите:
- Удостоверение о повышении квалификации;
- Подробный план уроков (150 стр.);
- Задачник для обучающихся (83 стр.);
- Вводную тетрадь «Знакомство со счетами и правилами»;
- БЕСПЛАТНЫЙ доступ к CRM-системе, Личному кабинету для проведения занятий;
- Возможность дополнительного источника дохода (до 60.000 руб. в месяц)!

Пройдите дистанционный курс «Ментальная арифметика» на проекте "Инфоурок"!

Подать заявку
26-28 октября 2019 I МЕЖДУНАРОДНЫЙ ПЕДАГОГИЧЕСКИЙ «ИНФОФОРУМ» «Современные тенденции в воспитании и социализации детей» Подать заявку Очное участие Дистанционное участие Курс повышения квалификации (36 часов) + Сертификат участника “Инфофорума”
IV Международный дистанционный конкурс «Старт» Для дошкольников и учеников 1-11 классов Рекордно низкий оргвзнос 25 Р. 16 предметов ПОДАТЬ ЗАЯВКУ

Вам будут интересны эти курсы:

Курс профессиональной переподготовки «Информационные технологии в профессиональной деятельности: теория и методика преподавания в образовательной организации»
Курс повышения квалификации «Использование компьютерных технологий в процессе обучения в условиях реализации ФГОС»
Курс повышения квалификации «Специфика преподавания информатики в начальных классах с учетом ФГОС НОО»
Курс повышения квалификации «Введение в программирование на языке С (СИ)»
Курс профессиональной переподготовки «Управление в сфере информационных технологий в образовательной организации»
Курс повышения квалификации «Современные тенденции цифровизации образования»
Курс повышения квалификации «Специфика преподавания дисциплины «Информационные технологии» в условиях реализации ФГОС СПО по ТОП-50»
Курс повышения квалификации «Современные языки программирования интегрированной оболочки Microsoft Visual Studio C# NET., C++. NET, VB.NET. с использованием структурного и объектно-ориентированного методов разработки корпоративных систем»
Курс повышения квалификации «Применение интерактивных образовательных платформ на примере платформы Moodle»
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.