Пример использования стандартных событий классов

Рассмотрим чисто учебную программу, использующую некоторые «стандартные» события классов.

В программе использован обработчик события одинарного нажатия левой кнопки мышки на форме, при этом из всех запусков обработчика программа реагирует только на нажатие кнопки мышки, когда ее курсор находится в левом верхнем углу формы:

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 – Просмотр массива, сброс программы и ее повторный запуск


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: