我一直在手动设置每个按钮的事件,但是我如何概括呢?
我想我可以覆盖ButtonBase,但我该怎么做?我是一个相对较新的C#程序员,我需要这个,因为我正在模拟一个真实的设备,所以我需要更改光标,以便用户知道他们可以点击的位置。
答案 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。