我用几个按钮创建了 Windows 窗体。现在我希望当光标指向每个按钮时,按钮弹出或缩放,当光标从该按钮上移除时,它会以正常大小出现。
问问题
1843 次
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 回答