-2

我用几个按钮创建了 Windows 窗体。现在我希望当光标指向每个按钮时,按钮弹出或缩放,当光标从该按钮上移除时,它会以正常大小出现。

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

您可以通过鼠标输入事件中的代码更改按钮大小。并在鼠标离开事件中重置它。

于 2012-06-05T08:44:24.830 回答
1

您可以在鼠标进入和离开事件时更改按钮的大小,或者创建两个图像,一个小,另一个大,然后更改这些事件的图像。

于 2012-06-05T08:46:26.333 回答
0

您必须同时处理 MouseEnter/MouseLeave 和 GotFocus/LostFocus 事件来解决键盘导航问题。

这样的效果在 WPF 应用程序中要容易得多。如果您需要视觉效果,也许您应该考虑创建一个 WPF 应用程序。检查按钮上的 xaml 中的缩放转换(在 controltemplate 中)以执行“缩放”,其中通过缩放按钮来处理类似的要求,以一种可以附加到您想要的任何按钮的方式,避免编写代码。

于 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 回答