就像在使用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 :(得分:1)
不要在鼠标输入时创建面板,而是已经创建了面板,然后只显示并隐藏它。
private void button1_MouseEnter(object sender, EventArgs e)
{
panel1.Show();
}
答案 1 :(得分:0)
您必须将面板添加到表单控件
Form1.Controls.Add(pnl);
如果您计划将某个面板悬停在按钮上,就像网页中的<div>
一样,则必须致电
BringToFront()
确保面板不会出现在按钮或表单上的其他控件后面 -
pnl.BringToFront();
与上一个答案一样,最好在面板上放置一个面板,只需将visible
设置为true或false以及面板位置,否则最终可能会向面板添加多个面板表格控制。
如果您打算在面板中显示纯文本,可能更容易使用工具提示控件 -