두 개의 DataGridView 스크롤 동시에 제어하는 방법
서로 다른 저장소에 저장되어 있는 같은 구조와 같은 양의 데이터를 동시에 확인해야 하였을 때 이용한 스크롤 제어 방법을 정리해본다. 위의 그림은 예시 화면으로 화면과 아래 참고 소스의 두 개의 DataGridView의 상세 정보는 왼쪽은 gridBasic, 오른쪽은 gridTarget이라는 컨트롤명을 사용했다.
두 개의 DataGridView의 스크롤을 동시에 제어할 때는 Scroll Event Handler를 이용한다.
1
|
public event System.Windows.Forms.ScrollEventHandler Scroll;
|
cs |
사용자가 컨트롤 내용을 스크롤할 때 발생하며 각 DataGridView Scroll 이벤트에 ScrollEventHandler를 추가하여, 사용자가 DataGridView 컨트롤의 스크롤을 제어할 때 두 개의 DataGridView 스크롤을 함께 제어한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
private void gridBasic_Scroll(object sender, ScrollEventArgs e)
{
//수평
gridTarget.HorizontalScrollingOffset = gridBasic.HorizontalScrollingOffset;
//수직
gridTarget.FirstDisplayedScrollingRowIndex = gridBasic.FirstDisplayedScrollingRowIndex;
}
private void gridTarget_Scroll(object sender, ScrollEventArgs e)
{
gridBasic.HorizontalScrollingOffset = gridTarget.HorizontalScrollingOffset;
gridBasic.FirstDisplayedScrollingRowIndex = gridTarget.FirstDisplayedScrollingRowIndex;
}
|
cs |
위의 소스는 Scroll 이벤트에 적용한 소스이며 스크롤의 가로(수평), 세로(수직) 제어를 설명하면
DataGridView Scroll 가로 수평 방향 제어 - DataGridView의 HorizontalScrollingOffset 속성은 가로(수평 방향)로 스크롤되는 픽셀 값을 가져오거나 설정한다. 해당 속성을 이용하여 스크롤의 수평 제어 값을 읽고 설정하여 gridBasic.HorizontalScrollingOffset 값을 gridBasic Scroll 이벤트에서 gridTarget에도 적용되게 4번째 줄의 코드를 작성했다. (12번째 줄도 동일)
DataGridView Scroll 세로 수직 방향 제어 - DataGridView의 FirstDisplayedScrollingRowIndex 속성은 DataGridView에 표시된 첫 번째 행의 인덱스를 가져오거나 설정한다. 해당 속성을 이용하여 스크롤 이벤트 발생 시, 현재 DataGridView에서 보이는 첫 번째 인덱스 값을 타겟이 되는 DataGridView의 첫 번째 행의 인덱스로 설정하여, 스크롤 제어 시 양쪽에 동일한 행이 보인다. (6, 13번째 줄)
'C#' 카테고리의 다른 글
[백준] 2753번 윤년 C# 풀이 (0) | 2019.09.24 |
---|---|
[백준] 9498번 시험성적 C# 풀이 (0) | 2019.09.21 |
[백준] 1330번 두 수 비교하기 C# 풀이 (0) | 2019.09.21 |
[DataGridView] 마지막 행 없애기 (0) | 2019.04.21 |
[DataGridView] 행 머리글 열 Row Headers 없애기 (0) | 2019.04.15 |