如何在鼠标移动中为C#中的所有按钮设置手形光标?

时间:2011-08-23 02:05:15

标签: c# visual-studio button mousemove

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

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

3 个答案:

答案 0 :(得分:5)

如果所有按钮都在表单上(没有嵌套容器),那么您可以在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;
}

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

您可以在Visual Studio Designer中执行此操作。通过 Ctrl -click'ing选择所有按钮,然后更改Cursor property