Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2013, 04:02   #1
DiCanio
 
Аватар для DiCanio
 
Регистрация: 03.10.2009
Сообщений: 9
По умолчанию 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,876
По умолчанию

Надо вычислить для каждой кнопки , куда её сдвигать при наведении относительно неё самой, что-то типа
Код:
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
Радость

Спасибо за ответ и советы!
Добился желаемого подпрыгивания кнопок при наведении курсора. Правда, пришлось добавить проверку на необходимость изменения позиции, поскольку, пока курсор передвигался по поверхности кнопки, её позиция пересчитывалась.
Код:
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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тема для курсовой работы 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