Несколько обработчиков для события

Реализуем два разных обработчика события MouseClick. Второй обработчик по щелчку кнопкой мыши просто отображает окно сообщения. Метод ShowClick подключается к событию аналогично методу Form1_MouseClick в файле Form1.Designer.cs.

 

// Программа 2: Эта версия имеет два обработчика событий для MouseClick
public partial class Form1: Form {

float x, y;

Brush pStdBrush;

Graphics poGraphics;

public Form1() {

InitializeComponent();

x=10;

y=20;

pStdBrush = new SolidBrush(Color.Black);

poGraphics = this.CreateGraphics();

this.Text = "Программа 3";

this.Show();

poGraphics.DrawString("Hello, Window Forms", this.Font, pStdBrush, x, y);

}

private void Form1_MouseClick(object sender, MouseEventArgs e) {

x = (float)e.X; y = (float)e.Y;

poGraphics.DrawString("Hello, Window Forms", this.Font, pStdBrush, x, y);

}

void ShowClick (object pSender, MouseEventArgs e) {

MessageBox.Show("Mouse clicked!!'");

}

}

События MouseDown и Keypress

Введем в наш пример обработку еще одного события, а именно, события KeyPress, а также покажем, как в событии MouseDown различать, какая кнопка была нажата, левая или правая (программа 3).

 

Обработка событий, вызванных правой и левой кнопкой мыши

Для того чтобы определить, какая кнопка мыши была нажата, нужно использовать свойство Button параметра MouseEventArgs. Перепишем методы обработчика событий:

private void Form1_MouseClick(object sender, MouseEventArgs e) {

if (e.Button == System.Windows.Forms.MouseButtons.Left) // если левая кнопка

{

x = (float)e.X; y = (float)e.Y;

poGraphics.DrawString("Hello, Window Forms", this.Font, pStdBrush, x, y);

}

}

void ShowClick (object pSender, MouseEventArgs e) {

if (e.Button == System.Windows.Forms.MouseButtons.Right) // если правая кнопка

{

MessageBox.Show("Mouse clicked!!'");

}

}

}

Событие Keypress

Добавим событие KeyPress. При нажатии пользователем на клавишу, в конец строки приветствия будет добавлен соответствующий символ. Вместо класса String используется класс StringBuilder, который более эффективен в этой ситуации.

public partial class Form1: Form {

float x, y;

Brush pStdBrush;

Graphics poGraphics;

StringBuilder pStr;

String s;

public Form1() {

InitializeComponent();

x=10;

y=20;

pStdBrush = new SolidBrush(Color.Black);

poGraphics = this.CreateGraphics();

this.Text = "Программа 4";

this.Show();

pStr = new StringBuilder("Hello, Window Forms");

s = pStr.ToString();

poGraphics.DrawString(s, this.Font, pStdBrush, x, y);

}

private void Form1_MouseClick(object sender, MouseEventArgs e) {

if (e.Button == System.Windows.Forms.MouseButtons.Left) // если левая кнопка

{

x = (float)e.X; y = (float)e.Y;

poGraphics.DrawString(s, this.Font, pStdBrush, x, y);

}

}

void ShowClick (object pSender, MouseEventArgs e) {

if (e.Button == System.Windows.Forms.MouseButtons.Right) // если правая кнопка

{

MessageBox.Show("Mouse clicked!!'");

}

}

private void Form1_KeyPress(object sender, KeyPressEventArgs e) {


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



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