Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 16.02.2013, 04:02   #1
DiCanio
 
Аватар для DiCanio
 
Регистрация: 03.10.2009
Сообщений: 9
Репутация: 10
По умолчанию WinForms. Событие(я) для 10 кнопок

Имеется 10 кнопок. При наведении курсора на кнопку, она меняет положение на несколько пикселей, возвращается на место после того, как курсор покидает видимую часть кнопки. Такого эффекта можно добиться следующим образом:

private void button5_MouseMove(object sender, MouseEventArgs e)
{
button5.Location = new Point(204,19);
}

private void button5_MouseLeave(object sender, EventArgs e)
{
button5.Location = new Point(206, 21);
}

Нужно чтобы все 10 кнопок реагировали на курсор именно так. Какой подход для решения этой задачи будет являться наиболее оптимальным? Не хотелось бы писать подобные строки кода для каждой кнопки.
DiCanio вне форума   Ответить с цитированием
Старый 16.02.2013, 09:15   #2
phomm
personality
Профессионал
 
Аватар для phomm
 
Регистрация: 28.04.2009
Адрес: Тюмень
Сообщений: 2,855
Репутация: 1511

icq: 421049471
skype: phomm-
По умолчанию

Надо вычислить для каждой кнопки , куда её сдвигать при наведении относительно неё самой, что-то типа
Код:

button5.Location = new Point(button5.Location.X + 50, button5.Location.Y + 20);

Будет однообразное смещение для всех кнопок, для более хитрых законов смещения надо будет посложнее написать код.
Потом всем кнопкам назначить один и тот же этот обработчик , можно в коде , обычно это модуль Form1.Designer.cs (форма может быть и другая)
Код:

this.button1.Click += new System.EventHandler(this.button1_Click);

тут кнопке button1 даётся обработчик button1_click а Вам надо будет всем кнопкам дать один и тот же - для наведения один и отведения второй
Более гуманно это делается так - выделяются все кнопке в дизайнере формы , открываются их свойства, закладка событий (маленькая жёлтая молния) - и там в строке MouseLeave выбрать обработчик для отведения и в строке MouseMove - для наведения - так они назначаться всем кнопкам разом.

После этого надо лишь в обработчике заменить конкретную кнопку (button5 у Вас) на (Button) sender.
В целом можно примерно так сделать
Код:

private void button_MouseMove(object sender, MouseEventArgs e)
{
    Button btn = (Button) sender;
    btn.Location = new Point(btn.Location. X + 50, btn.Location.Y + 20);
}

private void button_MouseLeave(object sender, EventArgs e)
{
    Button btn = (Button) sender;
    btn.Location = new Point(btn.Location. X - 50, btn.Location.Y - 20);
}

Также я заменил названия самих обработчиков - убрал номера, чтобы не было путаницы.

Такой подход позволит все кнопки обрабатывать в едином стиле.
Код не проверял, прямо тут набрал, возможны опечатки.

ПС. Желательно поизучать литературу, а то будете постоянно на форумах спрашивать ? Неудобно и долго, плюс иногда не отвечают или отвечают не то. "Хочешь что-то сделать - сделай это сам"
ПС2. Код надо оформлять при набирании поста - кнопочкой #
phomm вне форума   Ответить с цитированием
Старый 16.02.2013, 15:11   #3
DiCanio
 
Аватар для DiCanio
 
Регистрация: 03.10.2009
Сообщений: 9
Репутация: 10
Радость

Спасибо за ответ и советы!
Добился желаемого подпрыгивания кнопок при наведении курсора. Правда, пришлось добавить проверку на необходимость изменения позиции, поскольку, пока курсор передвигался по поверхности кнопки, её позиция пересчитывалась.
Код:

private void button3_MouseMove(object sender, MouseEventArgs e)
        {
            Button btn = (Button)sender;
            if (btn.Location.Y != 28)
            btn.Location = new Point(btn.Location.X - 2, btn.Location.Y - 2);
        }

DiCanio вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тема для курсовой работы C#, WinForms, GDI++, ADO.NET, WPF. AIR_3 Помощь студентам 0 28.11.2012 17:23
Пагинатор для WinForms mixa_go Windows Forms 0 07.12.2011 18:03
найти нужный control для WinForms приложения Glen WPF, UWP, WinRT, XAML 2 18.10.2011 17:19
Сделать установщик для WinForms. Не запускается на другом компе MakTpaxep Windows Forms 7 20.09.2010 20:47
Массив кнопок в WinForms N1KeL Windows Forms 3 24.05.2010 22:53


07:53.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru