-2

ボタンの少ないウィンドウフォームを作成しました。カーソルが各ボタンを指しているときに、ボタンがポップアウトまたはズームし、カーソルがそのボタンから削除されると、通常のサイズになります。

4

5 に答える 5

4

次のようになります。

Button.MouseEnter += new EventHandler(delegate(object Sender, EventArgs e) { Button.Size = new Size(Button.Size.Width + 50, Button.Size.Height + 50); } Button.Location = new Point(Button.Location.X - (50 / 2), Button.Location.Y - (50 / 2)});

Button.MouseLeave += new EventHandler(delegate(object Sender, EventArgs e) { Button.Size = new Size(Button.Size.Width - 50, Button.Size.Height - 50 }; Button.Location = new Point(Button.Location.X + (50 / 2), Button.Location.Y + (50 / 2)});

Button.GotFocus +=  new EventHandler(delegate(object Sender, EventArgs e) { Button.Size = new Size(Button.Size.Width + 50, Button.Size.Height + 50); } Button.Location = new Point(Button.Location.X - (50 / 2), Button.Location.Y - (50 / 2)});

Button.LostFocus += new EventHandler(delegate(object Sender, EventArgs e) { Button.Size = new Size(Button.Size.Width - 50, Button.Size.Height - 50 }; Button.Location = new Point(Button.Location.X + (50 / 2), Button.Location.Y + (50 / 2)});

「This.controls」イベントをループし、各ボタンを定義してから、このイベントを追加することもできます。これはスクリプトです。ほとんど何でもできます =)

于 2012-06-05T08:46:50.883 に答える
1

ボタンのサイズは、mouse-enter-event のコードで変更できます。mouse-leave-eventでリセットします。

于 2012-06-05T08:44:24.830 に答える
1

マウスの入力および終了イベントでボタンのサイズを変更するか、1 つは小さい、もう 1 つは大きい 2 つの画像を作成し、これらのイベントで画像を変更することができます。

于 2012-06-05T08:46:26.333 に答える
0

キーボードナビゲーションを考慮して、MouseEnter/MouseLeaveイベントとGotFocus/LostFocusイベントの両方を処理する必要があります。

このような効果は、WPFアプリケーションでははるかに簡単です。視覚効果が必要な場合は、おそらくWPFアプリの作成を検討する必要があります。ボタンのxaml(コントロールテンプレート内)でスケール変換をチェックして、コードの記述を避け、任意のボタンにアタッチできる方法でボタンをスケーリングすることで同様の要件が処理される「ズーム」を実行します。

于 2012-06-05T08:55:26.260 に答える
0

最も簡単な方法はを使用することのようSetBoundsです。Control.Scaleすべての子コントロールを含むウィンドウ全体を拡大縮小することを前提としているため、うまく機能しません。したがって、常にビューポート(この場合はウィンドウクライアントフレーム)の左上隅から拡大縮小されます。

    Button b;

    public Form1()
    {
        InitializeComponent();

        b = new Button();
        b.Text = "Hover me";
        b.Top = 100;
        b.Left = 100;
        b.Size = new Size(80, 30);

        this.Controls.Add(b);

        b.MouseEnter += delegate(object sender, EventArgs e)
        {
            b.SetBounds(b.Left - 5, b.Top - 2, b.Width + 10, b.Height + 4);
        };
        b.MouseLeave += delegate(object sender, EventArgs e)
        {
            b.SetBounds(b.Left + 5, b.Top + 2, b.Width - 10, b.Height - 4);
        };
    }
于 2012-06-05T09:06:29.913 に答える