2013-04-08 73 views
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 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)如果这是好的,那么我在这里做的错误是什么?

谢谢。

回答

0

您必须将面板添加到窗体控件

Form1.Controls.Add(pnl); 

如果计划有超过就像网络一<div>按钮面板悬停,你将不得不调用 BringToFront()保证面板不出现在表格上的按钮或其他控件后面 -

pnl.BringToFront(); 

也像上一个答案,它可能是最好在表单上放置一个面板,并将visible设置为true或false以及面板位置,否则最终可能会将多个面板添加到表单控件。

如果你打算只是显示在面板纯文本,它可能是更容易使用工具提示控制 -

MSDN - Tooltip Control

1

不要在鼠标输入上创建面板,而是要创建面板然后只显示和隐藏它。

private void button1_MouseEnter(object sender, EventArgs e) 
{ 
    panel1.Show(); 
} 
相关问题