2011-06-11 7 views
2

Control.Location은 부모 패널 컨트롤의 슬라이더 위치를 고려하지 않고 스크롤 막대가없는 경우처럼 값을 반환합니다. 그렇다면 스크롤 가능한 패널 안에 컨트롤의 실제 위치를 얻는 방법은 무엇입니까? 그것은 않습니다자동 스크롤 기능이있는 Windows.Forms.Panel 내의 컨트롤 위치

Button button; 
     public Form1() 
     { 
      InitializeComponent(); 
      panel1.Height = 200; 
      panel1.AutoScrollMinSize = new Size(0, 2000); 
      button = new Button(); 
      panel1.Controls.Add(button); 
      button.Top = 1500; 
      button.Click += new EventHandler(button_Click); 
     } 

     void button_Click(object sender, EventArgs e) 
     { 
      MessageBox.Show(button.Location.Y.ToString()); 
     } 

답변

1

: 예를 들어 여기 내 버튼의 실제 위치를 얻을 수 없다. 나는 스크롤 패널 내부에 패널을 넣을 경우, 위치의 위치가 변화하고 내가 스크롤 :

Private Sub Panel1_Scroll(ByVal sender As Object, ByVal e As ScrollEventArgs) Handles Panel1.Scroll 
    Me.Text = Panel2.Location.ToString 
End Sub 

당신이 스크롤지고 다른 패널 내부의 컨트롤이없는 것을 확인하고 위치 속성은하지 않습니다 변화.

그렇지 않으면 PointToScreen 및 PointToClient 함수를 살펴 보거나 스크롤 부모의 AutoScrollPosition 값에 따라 값을 조정하십시오.

+0

맞아요, 실제로 그랬습니다. –

+0

몇 가지 코드 예제를 추가했습니다. 명확하지 않은 점에 대해 사과드립니다. AutoSctollPosition이 실제로 내 문제를 해결할 것임을 깨달았습니다. 감사합니다! – Natalia