События мыши
В Интернете часто встречается шуточная программка, представляющая собой диалоговое окно с двумя кнопками. Для ответа на предлагаемый вопрос следует нажать на одну из двух кнопок, причем вторая кнопка при наведении на нее курсора начинает "убегать" от него. Вы можете встретить реализацию этой шутки, написанную на многих языках — от C до Flash-приложений. Сделаем что-то подобное на C#. Создаем новое Windows-приложение и называем его SocOpros. Из окна Toolbox перетаскиваем на форму две кнопки Button и надпись Label. Устанавливаем следующие свойства элементов управления и формы:
FormBorderStyle | Fixed3D |
Icon | Путь E:\Program Files\Microsoft Visual Studio .NET2003\Common7\Graphics\icons\Computer\W95MBX02.ICO |
Size | 344; 176 |
Text | Социологический опрос |
Size | 12 |
Bold | true |
Location | 32; 28 |
Size | 272; 32 |
Text | Вы довольны своей зарплатой? |
Name | btnyes |
Location | 67; 92 |
Text | Да |
Name | btnno |
Location | 195; 92 |
Text | Нет |
Щелкаем дважды по кнопке "Да". В обработчике этой кнопки вставляем следующий код:
private void btnyes_Click(object sender, System.EventArgs e) { MessageBox.Show("Мы и не сомневались, что Вы так думаете!"); }
Выделяем кнопку "Нет". Открываем окно Properties. Переключаемся в окно событий и дважды щелкаем в поле MouseMove (рис. 1.40).
Рис. 1.40. Событие MouseMove для кнопки btnno Надпись на информационной панели — "Происходит, когда мышь перемещается"
В обработчике этого события связываем движение мыши с координатами кнопки и устанавливаем координаты кнопки, куда она будет возвращаться, если во время своего движения выйдет за указанную область:
private void btnno_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { btnno.Top -= e.Y; btnno.Left += e.X; if (btnno.Top < -10 || btnno.Top > 100) btnno.Top = 60; if (btnno.Left < -80 || btnno.Left > 250) btnno.Left = 120; }