2013-04-08 1 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); 

제어, 당신은 보장하기 위해 BringToFront()를 호출해야합니다 폼의 버튼이나 다른 컨트롤 뒤에 패널이 표시되지 않음 -

pnl.BringToFront(); 

이전 답변과 마찬가지로 양식에 이미 배치 된 패널을 가지고 더 좋게 설정하고 visible을 true 또는 false로 설정하고 패널 위치를 설정하면 양식 컨트롤에 여러 패널이 추가 될 수 있습니다.

MSDN - Tooltip Control

-

그냥 패널에 일반 텍스트를 보여주는에 계획하는 경우, 툴팁 컨트롤을 사용하는 것이 더 쉬울 수 있습니다

1

마우스 입력시 패널을 만들지 말고, 패널을 이미 만들어 놓은 다음 표시하고 숨기십시오. 당신이 웹에서 <div> 같은 버튼을 통해 패널 호버를하려는 경우

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