有没有办法在c#中缩放按钮?

时间:2012-06-05 08:41:49

标签: c# button resize

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

5 个答案:

答案 0 :(得分: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”事件,并定义每个按钮,然后添加此事件。这是脚本,你几乎可以做任何事情=)

答案 1 :(得分:1)

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

答案 2 :(得分:1)

你可以在鼠标进入和离开事件时改变按钮的大小,或者创建两个图像 是小而大,并改变这些事件的形象。

答案 3 :(得分:0)

您必须同时处理MouseEnter / MouseLeave和GotFocus / LostFocus事件以考虑键盘导航。

这样的效果在WPF应用程序中要容易得多。如果您需要视觉效果,也许您应该考虑创建一个WPF应用程序。通过缩放按钮来检查Scale transform in xaml (in a controltemplate) on a button to perform a "zoom"处理类似要求的位置,其方式可以附加到您想要的任何按钮上,避免编写代码。

答案 4 :(得分:0)

最简单的方法似乎是使用SetBoundsControl.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);
        };
    }