Spread for .NET
스프레드 내용에서 문자 검색
하_늘_바_람
2022. 7. 25. 15:11
// 현재 검색에서 행 위치 지정하기
// 범위 검색이기 때문에 범위 검색의 시작 위치를 지정하기 위해서 사용한다.
private int SearchedRowIndex = 0
private void txtSearchSkuFullNM_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Enter) {
// 초기화
int refRowIndex = -1, refColumnIndex = -1;
SearchFoundFlags result;
// 순환 검색을 위해서 반복문 사용함.
while (true) {
// 반드시 범위검색 조건을 true로 해야만 해당 컬럼에서만 검색을 처리한다.
result = sprFSOR02.Search(0, txtSearchSkuFullNM.Text, false, false, false, false, true, false, false,
true, SearchedRowIndex, // 범위검색(searchAsBlockRange), 범위검색에서 행의 시작 위치 설정
IDX_H_SKUFULLNM, shtFSOR02.RowCount - 1, IDX_H_SKUFULLNM,
ref refRowIndex, ref refColumnIndex);
if (result == SearchFoundFlags.Error) {
// 행의 시작 위치에서 찾기를 했을 때 값이 없으면 반복문 탈출
if (SearchedRowIndex == 0) {
MessageBox.Show("찾고자 하는 상품이 없습니다.", "알림",
MessageBoxButtons.OK, MessageBoxIcon.Information);
txtSearchSkuFullNM.SelectAll();
break;
}
else {
// 행의 시작위치로 이동하기
SearchedRowIndex = 0;
}
}
if (result != SearchFoundFlags.Error && refRowIndex >= 0 && refColumnIndex >= 0) {
// 찾기는 성공했으나 혹시 필터로 인해 숨겨진 곳이라면 다음 찾기로 이동처리
var filteredRowIndexes = shtFSOR02.RowFilter.GetIntersectedFilteredInRows();
if (filteredRowIndexes != null && !filteredRowIndexes.Contains(refRowIndex)) {
SearchedRowIndex = refRowIndex + 1;
continue;
}
// 해당 셀로 이동
shtFSOR02.SetActiveCell(refRowIndex, refColumnIndex);
sprFSOR02.ShowActiveCell(VerticalPosition.Nearest, HorizontalPosition.Nearest);
// 다음 행부터 검색
SearchedRowIndex = refRowIndex + 1;
txtSearchSkuFullNM.SelectAll();
break;
}
}
}
else if (e.KeyCode == Keys.Escape) {
txtSearchSkuFullNM.Text = "";
SearchedRowIndex = 0;
}
}