2013-01-31 2 views
0

양식과 dataGridViews를 사용하여 프로그램을 만들고 있습니다. 사용자가 양식의 크기를 조정할 수있게하고 dataGridViews에서 동일한 사람이 웹 브라우저 나 다른 창을 자신의 PC에서 크기를 조정할 수있게하려고합니다. 창의 테두리를 클릭하고 드래그합니다. 현재이 작업을 수행하는 간단한 버전을 사용하고 있습니다. 나는 전체로 설정 도크와 datGridView을 포함하는 패널의 모서리에 작은 그림 상자를 가지고 코드 추가 : 이것은 사용자가 내가 원하는 것을 할 수 있습니다사용자가 테두리를 사용하여 form/dataGridView의 크기를 조정할 수 있도록 허용

private void pictureBox11_MouseDown(object sender, MouseEventArgs e) 
    { 
     resize = true; 
    } 

    private void pictureBox11_MouseUp(object sender, MouseEventArgs e) 
    { 
     resize = false; 
    } 

    //Resize the Ben. List dataGrid(dataGridView4) 
    private void pictureBox11_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (resize) 
     { 
      this.panel4.Height = pictureBox11.Top + e.Y; 
      this.panel4.Width = pictureBox11.Left + e.X; 
     } 
    } 

을,하지만 난 그들을 원하는하지 방법 그것을하기 위해. 이 방법은 받아 들일 만하지만, 다른 방법으로도 할 수 있는지 알고 싶습니다. "다른 방법"은 물론 테두리를 클릭하고 드래그하여 크기를 조절하는 기능을 말합니다. 나는 여기에 새로운 유용한 정보를 기꺼이 기대하고있다. 그것은 나를 도와 줄 수있다. 그래서 어떤 도움이라도?

+1

winforms의 기본 크기 조정 방법에 어떤 문제가 있습니까? 도킹 된/고정 된 컨트롤이있는 경우 왜 자신의 메커니즘을 구현하고 싶습니까? 'SplitPanel' 컨트롤을 보셨습니까? – Jobo

+0

왜 그 질문에 양식을 추가했는지 잘 모르겠습니다. 양식은 그 기능을 독자적으로 허용합니다. 그러나 dataGridView는 그렇지 않습니다. 그래서 질문은 dataGridViews에 관한 것입니다. 전에는 SplitPanel을 사용한 적이 없습니다. – woods

+0

그럼 당신이 하나 이상의 SplitPanels에 DataGridViews 도킹을 시도하고 그것을 이해한다면 당신의 문제를 해결할 수 있는지 알아볼 것을 제안합니다 ... – Jobo

답변

0

MouseMove 이벤트를 사용하여이 작업을 수행 할 수 있습니다. e.location을 확인하여 마우스가 모서리 또는 모서리 근처에 있는지 확인한 다음 해당 커서를 표시하십시오. 마우스 버튼이 눌러져 있으면 마우스 움직임에 맞게 datagridview.size 또는 .location을 변경하십시오. (당신은 mousedown 이벤트에서 드래그의 시작을 잡아야 할 것입니다.)

이것은 윤곽을 그리는 방식과 비슷하지만 드래그 시작 부분에 상대적으로 움직여야합니다. 버튼이 눌러 졌을 때 몇 픽셀의 "점프". 물론, 다루어야 할 8 개의 측면/모서리가 있습니다. 또한 사용자가 커서 변경 사항에 대한 피드백을받는 것이 중요합니다.

기본 앵커링이나 도킹을 사용하는 것이 더 간단하지만이 방법에는 아무런 문제가 없습니다.

관련 문제