各ボタンのイベントを手動で設定してきましたが、これを一般化するにはどうすればよいですか?
ButtonBase をオーバーライドできると思いますが、どうすればよいでしょうか? 私は比較的新しい C# プログラマーであり、実際のデバイスをシミュレートしているため、これが必要です。そのため、カーソルを変更して、ユーザーがどこをクリックできるかを知る必要があります。
各ボタンのイベントを手動で設定してきましたが、これを一般化するにはどうすればよいですか?
ButtonBase をオーバーライドできると思いますが、どうすればよいでしょうか? 私は比較的新しい C# プログラマーであり、実際のデバイスをシミュレートしているため、これが必要です。そのため、カーソルを変更して、ユーザーがどこをクリックできるかを知る必要があります。
すべてのボタンがフォーム上にある場合 (ネストされたコンテナーがない場合)、次のようなことができます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;
}
新しい「クラス ライブラリ」プロジェクトを作成し、次のような新しいクラスを作成します。
public class ExtendedButton:Button
{
public ExtendedButton()
{
MouseEnter += (s, e) => Cursor = Cursors.Hand;
MouseLeave += (s, e) => Cursor = Cursors.Arrow;
}
}
Windows フォーム プロジェクトで、新しいライブラリへの参照を追加し、フォームで、Button の代わりに ExtendedButton コントロールを追加します。