Рассмотрим чисто учебную программу, использующую некоторые «стандартные» события классов.
В программе использован обработчик события одинарного нажатия левой кнопки мышки на форме, при этом из всех запусков обработчика программа реагирует только на нажатие кнопки мышки, когда ее курсор находится в левом верхнем углу формы:
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
if ((e.X < 20 && e.X > 0 && e.Y < 20 & e.Y > 0) && p == 0)
Этот прием часто используется программистами для формирования реакции программы на «клик» мышки в определенных местах экрана, например, карты города или фото группы студентов – легко написать необходимые комментарии при «попадании» мышки в определенный участок формы.
Обработчик события перемещения мышки по форме (дополнительное условие p==1) позволяет записать положения курсора мышки в массив 100 точек.
Просмотр массива в графическом режиме осуществляется с помощью обработчика двойного нажатия левой кнопки мышки.
С помощью обработчика – нажатия клавиши в окне редактора осуществляется начальная установка программы.
|
|
Исходный код программы:
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 int p,i,j;
int[,] tk = new int[100, 2];
public Form1()
{
InitializeComponent();
textBox1.Text = "";
p = 0; i = 0; j = 0;
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
if ((e.X < 20 && e.X > 0 && e.Y < 20 & e.Y > 0) && p == 0)
{
textBox1.AppendText("Вы кликнули мышкой в верхнем левом углу
\r\n");
p++;
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (p == 1)
if (i < 100) { tk[i, 0] = e.X; tk[i, 1] = e.Y; i++; }
else
{
textBox1.AppendText("Заполнение массива закончено \r\n");
p++;
}
}
private void Form1_MouseDoubleClick(object sender,
MouseEventArgs e)
{
this.Invalidate();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Pen myPen = new Pen(Color.Red, 2);
Graphics g = e.Graphics;
for (int n = 0; n < 100; n++)
g.DrawEllipse(myPen, tk[n, 0], tk[n, 1], 2, 2);
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
p = 0; i = 0;
}
}
}
Работа программы представлена на рисунках 14.1 и 14.2.
Рисунок 14.1 – Запуск программы и заполнение массива
Рисунок 14.2 – Просмотр массива, сброс программы и ее повторный запуск