2013-04-08 42 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(); 
} 
相關問題