Как установить курсор на ход мыши для всех кнопок в C #? - PullRequest
1 голос
/ 23 августа 2011

Я настраивал события каждой кнопки вручную, но как я могу обобщить это?

Полагаю, я мог бы переопределить ButtonBase, но как мне это сделать?Я относительно новый программист C # и мне это нужно, потому что я имитирую реальное устройство, поэтому мне нужно изменить курсор, чтобы пользователь знал, где он может щелкнуть.

Ответы [ 3 ]

5 голосов
/ 23 августа 2011

Если все кнопки находятся в форме (без вложенных контейнеров), вы можете сделать что-то подобное на Form_Load()

foreach(Button b in this.Controls.OfType<Button>())
{
    b.MouseEnter += (s, e) => b.Cursor = Cursors.Hand;
    b.MouseLeave += (s, e) => b.Cursor = Cursors.Arrow;
}

Если вы не хотите касаться каждой кнопки в форме,Вы можете сделать простую коллекцию и перебрать их

Button[] buttons = new[] {button1, button2, button3};

foreach (Button b in buttons)
{
    b.MouseEnter += (s, e) => b.Cursor = Cursors.Hand;
    b.MouseLeave += (s, e) => b.Cursor = Cursors.Arrow;
}
2 голосов
/ 23 августа 2011

Создайте новый проект "Библиотека классов" и создайте новый класс, подобный этому:

public class ExtendedButton:Button
{
    public ExtendedButton()
    {
        MouseEnter += (s, e) => Cursor = Cursors.Hand;
        MouseLeave += (s, e) => Cursor = Cursors.Arrow;
    }
}

В проекте Windows Form добавьте ссылку на новую библиотеку, а в форме добавьте элемент управления ExtendedButton вместо Button.

0 голосов
/ 23 августа 2011

Вы можете сделать это в Visual Studio Designer. Выберите все кнопки нажатием Ctrl и измените свойство Курсор .

...