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 フォーム プロジェクトで、新しいライブラリへの参照を追加し、フォームで、Button の代わりに ExtendedButton コントロールを追加します。

于 2011-08-23T05:18:33.743 に答える
0

Visual Studio Designer で実行できます。クリックしてすべてのボタンを選択し、 CursorプロパティCtrlを変更します。

于 2011-08-23T02:44:37.713 に答える