Добавлен: 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);
}
}
}
-
Содержание отчета
-
Задание.
-
Текст программы.
-
Тестовые наборы данных для тестирования методов класса.
-
Контрольные вопросы
-
Назначения компонентов класса Button?
-
Назначения компонентов класса Label?
-
Назначения компонентов класса TextBox?
-
Назначения компонентов класса TrackBar?
-
Назначения компонентов класса numericUpDown?
-
Когда возникает событие Load?
-
Когда возникает событие Click?
-
Когда возникает событие Scroll?
-
Когда возникает событие ValueChanged?
-
Когда возникает событие KeyPress?
-
Когда возникает событие KeyDown?