Файл: Приложение Конвертер.docx

ВУЗ: Не указан

Категория: Методичка

Дисциплина: Программирование

Добавлен: 21.10.2018

Просмотров: 1301

Скачиваний: 16

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

Таблица 7 - Обработчики событий для компонентов главной формы

Имя компонента

Событие

Обработчик

TPanelp_p (главная форма)

Load

TPanelp_p_Load

TPanelp_p (главная форма)

KeyDown

TPanelp_p_KeyDown

TPanelp_p (главная форма)

KeyPress

TPanelp_p_KeyPress

trackBar1

Scroll

trackBar1_Scroll

trackBar2

Scroll

trackBar1_Scroll

numericUpDown1

ValueChanged

numericUpDown1_ValueChanged

numericUpDown2

ValueChanged

numericUpDown1_ValueChanged

button1 – button19

Click

button_Click

выходToolStripMenuItem

Click

выходToolStripMenuItem_Click

историяToolStripMenuItem

Click

историяToolStripMenuItem1_Click

справкаToolStripMenuItem

Click

справкаToolStripMenuItem_Click

Теперь можно запустить приложение и протестировать работу командных кнопок для ввода цифр действительного числа, представленного в выбранной системе счисления. А также для изменения оснований систем счисления исходного числа и результата. Ниже приведён текст модуля главного окна приложения.

namespace Конвертор

{

public partial class Form1 : Form

{

//Объект класса Управление.

Control_ ctl = new Control_();

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

label1.Text = ctl.ed.Number;

//Основание с.сч. исходного числа р1.

trackBar1.Value = ctl.Pin;

//Основание с.сч. результата р2.

trackBar2.Value = ctl.Pout;

label3.Text = "Основание с. сч. исходного числа " + trackBar1.Value;

label4.Text = "Основание с. сч. результата " + trackBar2.Value;

label2.Text = "0";

//Обновить состояние командных кнопок.

this.UpdateButtons();

}

//Обработчик события нажатия командной кнопки.

private void button1_Click(object sender, EventArgs e)

{

//ссылка на компонент, на котором кликнули мышью

Button but = (Button)sender;

//номер выбранной команды

int j = Convert.ToInt16(but.Tag.ToString());

DoCmnd(j);

}

//Выполнить команду.

private void DoCmnd(int j)

{

if (j == 19) { label2.Text = ctl.DoCmnd(j); }

else

{

if (ctl.St == Control_.State.Преобразовано)

{

//очистить содержимое редактора

label1.Text = ctl.DoCmnd(18);

}

//выполнить команду редактирования

label1.Text = ctl.DoCmnd(j);

label2.Text = "0";

}

}

//Обновляет состояние командных кнопок по основанию с. сч. исходного числа.

private void UpdateButtons()

{

//просмотреть все компоненты формы

foreach (Control i in this.Controls)


{

if (i is Button)//текущий компонент - командная кнопка

{

int j = Convert.ToInt16(i.Tag.ToString());

if (j < trackBar1.Value)

{

//сделать кнопку доступной

i.Enabled = true;

}

if ((j >= trackBar1.Value) && (j <= 15))

{

//сделать кнопку недоступной

i.Enabled = false;

}

}

}

}

//Изменяет значение основания с.сч. исходного числа.

private void trackBar1_Scroll(object sender, EventArgs e)

{

numericUpDown1.Value = trackBar1.Value;

//Обновить состояние командных кнопок.

this.UpdateP1();

}

//Изменяет значение основания с.сч. исходного числа.

private void numericUpDown1_ValueChanged(object sender, EventArgs e)

{

//Обновить состояние.

trackBar1.Value = Convert.ToByte(numericUpDown1.Value);

//Обновить состояние командных кнопок.

this.UpdateP1();

}

//Выполняет необходимые обновления при смене ос. с.сч. р1.

private void UpdateP1()

{

label3.Text = "Основание с. сч. исходного числа " + trackBar1.Value;

//Сохранить р1 в объекте управление.

ctl.Pin = trackBar1.Value;

//Обновить состояние командных кнопок.

this.UpdateButtons();

label1.Text = ctl.DoCmnd(18);

label2.Text = "0";

}

//Изменяет значение основания с.сч. результата.

private void trackBar2_Scroll(object sender, EventArgs e)

{

//Обновить состояние.

numericUpDown2.Value = trackBar2.Value;

this.UpdateP2();

}

//Изменяет значение основания с.сч. результата.

private void numericUpDown2_ValueChanged(object sender, EventArgs e)

{

trackBar2.Value = Convert.ToByte(numericUpDown2.Value);

this.UpdateP2();

}

//Выполняет необходимые обновления при смене ос. с.сч. р2.

private void UpdateP2()

{

//Копировать основание результата.

ctl.Pout = trackBar2.Value;

//Пересчитать результат.

label2.Text = ctl.DoCmnd(19);

label4.Text = "Основание с. сч. результата " + trackBar2.Value;

}

//Пункт меню Выход.

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

}

//Пункт меню Справка.

private void справкаToolStripMenuItem_Click(object sender, EventArgs e)

{

AboutBox1 a = new AboutBox1();

a.Show();

}

//Пункт меню История.

private void историяToolStripMenuItem1_Click(object sender, EventArgs e)

{

Form2 history = new Form2();

history.Show();

if (ctl.his.Записей() == 0)

{

history.textBox1.AppendText("История пуста");

return;

}

//Ообразить историю.

for (int i = 0; i < ctl.his.Записей(); i++)

{

history.textBox1.AppendText(ctl.his[i].ToString());

}

}

//Обработка алфавитно-цифровых клавиш.

private void Form1_KeyPress(object sender, KeyPressEventArgs e)

{

int i = -1;

if (e.KeyChar >= 'A' && e.KeyChar <= 'F') i = (int)e.KeyChar - 'A' + 10;

if (e.KeyChar >= 'a' && e.KeyChar <= 'f') i = (int)e.KeyChar - 'a' + 10;

if (e.KeyChar >= '0' && e.KeyChar <= '9') i = (int)e.KeyChar - '0';

if (e.KeyChar == '.') i = 16;

if ((int)e.KeyChar == 8) i = 17;

if ((int)e.KeyChar == 13) i = 19;

if ((i < ctl.Pin)||(i >= 16)) DoCmnd(i);

}

//Обработка клавиш управления.

private void Form1_KeyDown(object sender, KeyEventArgs e)

{

if (e.KeyCode == Keys.Delete)

//Клавиша Delete.

DoCmnd(18);

if (e.KeyCode == Keys.Execute)

//Клавиша Execute Separator.

DoCmnd(19);

if (e.KeyCode == Keys.Decimal)


//Клавиша Decimal.

DoCmnd(16);

}

}

}

        1. Содержание отчета

  1. Задание.

  2. Текст программы.

  3. Тестовые наборы данных для тестирования методов класса.

        1. Контрольные вопросы

  1. Назначения компонентов класса Button?

  2. Назначения компонентов класса Label?

  3. Назначения компонентов класса TextBox?

  4. Назначения компонентов класса TrackBar?

  5. Назначения компонентов класса numericUpDown?

  6. Когда возникает событие Load?

  7. Когда возникает событие Click?

  8. Когда возникает событие Scroll?

  9. Когда возникает событие ValueChanged?

  10. Когда возникает событие KeyPress?

  11. Когда возникает событие KeyDown?