- •В.А. Новиков Объектно-ориентированное программирование в с#
- •Минск ● вгкс
- •Лабораторная работа 1 Константы, переменные, выражения. Визуальные элементы: кнопка и текстовое поле
- •Лабораторная работа 2 Операторы управления. Визуальные элементы: маскированное поле и установка цвета
- •Лабораторная работа 3 Ввод – вывод на консоль. Визуализация через файлы. Независимый переключатель и шрифты
- •Лабораторная работа 4 Строки. Модальные формы пользователя
- •Лабораторная работа 5 Массивы. Зависимый переключатель
- •Лабораторная 6 Перечисление. Немодальные формы пользователя
- •Лабораторная 7 Регулярные выражения. Таймер
- •Лабораторная работа 8 Прототипы-данные. Визуальный элемент выпадающий список
- •Лабораторная работа 9 Подпрограммы. Визуальный элемент список. Отработка событий клавиатуры
- •Лабораторная работа 10 Обработка исключительных ситуаций. Визуальный элемент закладка tabControl
- •Лабораторная работа 11 Переопределение операций. Закладка TabStrip
- •Лабораторная работа 12 Работа с файлами. Всплывающая подсказка
- •Лабораторная работа 13 Структуры. Перетаскивание элемента на форме
- •Лабораторная работа 14 Построение графиков через Excel. Объект Drawning
- •Содержание
Лабораторная работа 11 Переопределение операций. Закладка TabStrip
Цель работы.
Изучить формирование программ с использованием переопределения операций. Научиться создавать формы с использованием визуального элемента TabStrip.
План занятия.
Изучить теоретические сведения формирования программы на С#.
По приведенному листингу программы разработать на Visual Studio программу и отладить ее. Составить программу по индивидуальному заданию.
Краткие теоретические сведения.
Переопределение операций.
Используется для нестандартного действия в операциях.
Например: мы хотим для переменных x и y определить сумму не как x+y, а в виде 5x+4y или что-то в этом роде.
Можно переопределять только те операции, которые зарезервированы стандартно.
Переопределение унарных операций.
+ – ! ++ – – true false
Переопределение выполняется в виде процедуры стандартного типа:
public static double operator ++ (double x)
{ double temp = x+2; return temp;
}
Пример программы:
double x; x=1; x++; // x будет ровно 3
Переопределение бинарных операций.
+ - * / % && || ^ << >> == != > < > = < =
(нет операции = )
Пример :
public static double operator + ( double x, double y)
{double temp=5*x+4*y;
return temp
}
Программа:
double x=1,y=2;
double z=x+y; //z будет ровно 5x+4y=13
Порядок выполнения работы.
Закладки tabStrip нет в стандартной поставке и ее нужно установить: Сервис/Выбрать элементы панели элементов; закладка COM-компаненты; флажок Microsoft Form 2.0 TabStrip.
Создайте форму:
//ЗАКЛАДКИ ОДИНАКОВЫЕ
Воспроизведите код программы.
//FORM
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
{
long[,] OKL = new long[12, 50];
byte[,] PRP = new byte[12, 50];
public Form1()
{
InitializeComponent();
}
private void button1_Click_1(object sender, EventArgs e)
{
this.Close();
}
private void UST(int i, int j)
{
textBox1.Text = OKL[i, j].ToString();
textBox2.Text = PRP[i, j].ToString();
float pr = OKL[i, j] * PRP[i, j] / 100;
textBox4.Text = pr.ToString();
pr += OKL[i, j];
textBox3.Text = pr.ToString();
}
private void Form1_Activated(object sender, EventArgs e)
{
comboBox1.Items.Add("Иванов И.И.");
comboBox1.Items.Add("Петров П.П.");
comboBox1.Items.Add("Сидоров С.С.");
comboBox1.Items.Add("Яковлев Я.Я.");
comboBox1.SelectedIndex = 0;
for(int i=0; i<12; i++)
for (int j = 0; j < 50; j++)
{
OKL[i, j] = 1000000; PRP[i, j] = 30;
}
axTabStrip1.Tabs.Clear();
axTabStrip1.Tabs.Add("янв"); axTabStrip1.Tabs.Add("фев"); axTabStrip1.Tabs.Add("март");
axTabStrip1.Tabs.Add("апр"); axTabStrip1.Tabs.Add("май"); axTabStrip1.Tabs.Add("июнь");
axTabStrip1.Tabs.Add("июль"); axTabStrip1.Tabs.Add("авг"); axTabStrip1.Tabs.Add("сен");
axTabStrip1.Tabs.Add("окт"); axTabStrip1.Tabs.Add("ноя"); axTabStrip1.Tabs.Add("дек");
axTabStrip1.Value = 0;
UST(0, 0);
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
UST(comboBox1.SelectedIndex, axTabStrip1.Value);
}
private void axTabStrip1_Change(object sender, EventArgs e)
{
UST(comboBox1.SelectedIndex, axTabStrip1.Value);
}
private void textBox1_MouseLeave(object sender, EventArgs e)
{
int i = comboBox1.SelectedIndex;
int j = axTabStrip1.Value;
OKL[i, j] = Convert.ToInt64(textBox1.Text);
UST(i, j);
}
private void textBox2_MouseLeave(object sender, EventArgs e)
{
int i = comboBox1.SelectedIndex;
int j = axTabStrip1.Value;
PRP[i, j] = Convert.ToByte(textBox2.Text);
UST(i, j);
}
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if(e.KeyCode==Keys.Enter)
{
int i = comboBox1.SelectedIndex;
int j = axTabStrip1.Value;
OKL[i, j] = Convert.ToInt64(textBox1.Text);
UST(i, j);
}
}
private void textBox2_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
int i = comboBox1.SelectedIndex;
int j = axTabStrip1.Value;
PRP[i, j] = Convert.ToByte(textBox2.Text);
UST(i, j);
}
}
}}
Индивидуальное задание.
Создайте программу переопределения операции плюс: 3a+4b и операции умножение: (1+a)*(5+b). Составьте выражение с использованием этих операций, проверьте результат.
Содержание отчета.
Представить отлаженную программу по индивидуальному заданию.