2

我一直在手动设置每个按钮的事件,但是我该如何概括呢?

我想我可以覆盖 ButtonBase,但我该怎么做呢?我是一个相对较新的 C# 程序员,我需要这个,因为我正在模拟一个真实的设备,所以我需要改变光标,以便用户知道他们可以点击哪里。

4

3 回答 3

6

如果所有按钮都在表单上(没有嵌套容器),那么您可以在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;
}
于 2011-08-23T02:11:20.983 回答
2

创建一个新的“类库”项目并像这样创建一个新类:

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

在 Windows 窗体项目上,添加对新库的引用,并在窗体上添加 ExtendedButton 控件而不是 Button。

于 2011-08-23T05:18:33.743 回答
0

您可以在 Visual Studio 设计器中执行此操作。通过单击选择所有按钮Ctrl并更改Cursor属性

于 2011-08-23T02:44:37.713 回答