Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 如何在鼠标进入事件时动态显示面板?_Winforms_Visual Studio 2010_C# 4.0 - Fatal编程技术网

Winforms 如何在鼠标进入事件时动态显示面板?

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

就像在使用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) 如果这样可以,那么我在这里犯了什么错误


谢谢。

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

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

您必须将面板添加到表单控件中

Form1.Controls.Add(pnl);
如果您计划将面板悬停在按钮上方,就像Web中的
,则必须调用
BringToFront()
以确保面板不会出现在窗体上的按钮或其他控件后面-

pnl.BringToFront();
与前面的答案一样,最好已经在表单上放置了一个面板,只需将
visible
以及面板位置设置为true或false,否则最终可能会向表单控件添加多个面板

如果您计划仅在面板中显示纯文本,则使用工具提示控件可能更容易-