- •В.А. Новиков Объектно-ориентированное программирование в с#
- •Минск ● вгкс
- •Лабораторная работа 1 Константы, переменные, выражения. Визуальные элементы: кнопка и текстовое поле
- •Лабораторная работа 2 Операторы управления. Визуальные элементы: маскированное поле и установка цвета
- •Лабораторная работа 3 Ввод – вывод на консоль. Визуализация через файлы. Независимый переключатель и шрифты
- •Лабораторная работа 4 Строки. Модальные формы пользователя
- •Лабораторная работа 5 Массивы. Зависимый переключатель
- •Лабораторная 6 Перечисление. Немодальные формы пользователя
- •Лабораторная 7 Регулярные выражения. Таймер
- •Лабораторная работа 8 Прототипы-данные. Визуальный элемент выпадающий список
- •Лабораторная работа 9 Подпрограммы. Визуальный элемент список. Отработка событий клавиатуры
- •Лабораторная работа 10 Обработка исключительных ситуаций. Визуальный элемент закладка tabControl
- •Лабораторная работа 11 Переопределение операций. Закладка TabStrip
- •Лабораторная работа 12 Работа с файлами. Всплывающая подсказка
- •Лабораторная работа 13 Структуры. Перетаскивание элемента на форме
- •Лабораторная работа 14 Построение графиков через Excel. Объект Drawning
- •Содержание
Лабораторная 6 Перечисление. Немодальные формы пользователя
Цель работы.
Изучить формирование программ с использованием перечислений. Научиться создавать формы с использованием немодальных форм.
План занятия.
Изучить теоретические сведения формирования программы на С#.
По приведенному листингу программы разработать на Visual Studio программу и отладить ее. Составить программу по индивидуальному заданию.
Краткие теоретические сведения.
Перечисление.
Перечисление – это список именованных констант. В отличие от константы при выводе выводится не числовые значения константы, а ее имя.
public enum zvanie
{рядовой, сержант, майор, генерал}
// Программа
zvanie x;
x= (zvanie)1;
Console.Write (“звание = {0}”, x ) ; // Будет напечатано: звание = сержант
Операции с перечислениями:
+ – ++ – –
Пример:
zvanie x, y;
x= (zvanie)1;
y = x++;
Console.Write (“звание = {0}”, y); // будет напечатано звание = майор
Можно и так:
zvanie x, y;
x = zvanie.рядовой;
y = x++;
Console.Write (“звание = {0}”, y); // звание = сержант
Перечисление напоминает текстовый массив (это имена перечисления) с инкапсупируемыми индексами. Все операции записи (т. е. присвоения) делаются над индексами, а на выводе выводятся имена.
Это можно было бы более сложно заменить массивом:
int[ ] x= {“рядовой”, “сержант”, “майор”);
int i = 1;
Console.Write (“звание = {0}”, x[ i ]); // будет напечатано звание = сержант
i++;
Console. Write (“звание = {0}”, x[ i ]; // будет напечатано звание = майор
Но в этом случае надо хранить в отдельной переменной индекс массива.
Перечисления как видно более удобны
Функции перечислений.
Enum.GetName(typeof(zvanie)) – Возвращает список имён в строковый массив:
string[] names=Enum.GetName(typeof(zvanie));
Enum.GetValues – возвращает значения перечисления.
Enum.IsDefined(typeof(zvanie),“сержант”); – Определяет есть ли в перечислении имя, указание вторым параметром строкой.
Порядок выполнения работы.
Создайте формы:
FORM1 FORM2
Воспроизведите программный код.
//PROGRAM
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form2 f2 = new Form2();
f2.Show();
Application.Run(new Form1());
}
}
}
//FORM1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static double z=1;
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
double x, y; string st;
x = Convert.ToDouble(textBox1.Text);
y = Math.Sin(x)+66+Form1.z;
st = String.Format("{0,4:0.##}",y);
textBox2.Text = st;
}
}}
//FORM2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void textBox1_MouseLeave(object sender, EventArgs e)
{
Form1.z = Convert.ToDouble(textBox1.Text);
}
} }
Индивидуальное задание.
Сформируйте перечисление воинских званий. Создайте форму из двух текстовых элементов: окно для текста звания и окно для номера звания. Составьте программу, по которой при указании номера звания в другом текстовом элементе будет меняться текст звания.
Содержание отчета.
Представить отлаженную программу по индивидуальному заданию.
Литература.
Павловская Т.А. С#, Программирование на языке высокого уровня. – М., СПб: Питер, 2010, с.215-219