Winforms 如何在鼠标进入事件时动态显示面板?
就像在使用css的网页中一样,我们可以在鼠标输入或悬停时显示div,就像我想在鼠标输入按钮事件时显示面板一样,但我无法做到这一点。我正在这样努力Winforms 如何在鼠标进入事件时动态显示面板?,winforms,visual-studio-2010,c#-4.0,Winforms,Visual Studio 2010,C# 4.0,就像在使用css的网页中一样,我们可以在鼠标输入或悬停时显示div,就像我想在鼠标输入按钮事件时显示面板一样,但我无法做到这一点。我正在这样努力 private void btn2_MouseEnter(object sender, EventArgs e) { Button btn = (Button)sender; btn.BackColor = System.Drawing.Color.MistyRose; //this is executed on
private void btn2_MouseEnter(object sender, EventArgs e)
{
Button btn = (Button)sender;
btn.BackColor = System.Drawing.Color.MistyRose; //this is executed on mouse enter
Point locationOnForm = btn.FindForm().PointToClient(
btn.Parent.PointToScreen(btn.Location));
Panel pnl = new Panel();
Label lbl = new Label();
lbl.Text = "anything";
pnl.Controls.Add(lbl);
pnl.Location = new Point(locationOnForm.X, locationOnForm.Y);
pnl.Size = new Size(500, 500);
pnl.BackColor = Color.SkyBlue;
pnl.Visible = true;
pnl.Show();
}
我不知道如何解决这个问题。我想知道
1) 这是正确的方法还是有其他方法
2) 如果这样可以,那么我在这里犯了什么错误
谢谢。不要在鼠标输入时创建面板,而是先创建面板,然后显示和隐藏它
private void button1_MouseEnter(object sender, EventArgs e)
{
panel1.Show();
}
您必须将面板添加到表单控件中
Form1.Controls.Add(pnl);
如果您计划将面板悬停在按钮上方,就像Web中的
,则必须调用
BringToFront()
以确保面板不会出现在窗体上的按钮或其他控件后面-
pnl.BringToFront();
与前面的答案一样,最好已经在表单上放置了一个面板,只需将visible
以及面板位置设置为true或false,否则最终可能会向表单控件添加多个面板
如果您计划仅在面板中显示纯文本,则使用工具提示控件可能更容易-