샘플공유 [FlexGrid Winforms] C1NumericEdit으로 값을 복사&붙여넣기 시 입력범위를 초과하는 값 제어하는 방법
추천0 비추천 0
페이지 정보
작성자 MESCIUS싸이먼 작성일 2023-11-21 18:25 조회 25회 댓글 0건본문
첨부파일
관련링크
안녕하세요.
메시어스 입니다.
C1NumericEdit에는 상한 및 하한 값을 설정하는 기능이 있습니다.
그래서 C1FlexGrid의 편집기로 사용하는 경우 키보드로 입력하면 설정한 입력 범위를 초과할 경우 C1NumericEdit의 유효성 검사에 따른 경고 표시 및 입력 제어가 이루어집니다.
하지만 클립보드에서 복사한 값은 설정한 입력 범위를 초과하더라도 표시됩니다.
이러한 동작을 피하고 값의 범위를 초과하는 입력을 방지하려면 C1FlexGrid의 KeyDown 이벤트를 사용할 수 있습니다.
- KeyDown 이벤트에서 먼저 복사된 값이 C1NumericEdit에서 정의한 상한 및 하한 범위 내에 있는지 확인합니다.
- 그런 다음 해당하지 않는 경우 e.Handled 속성을 True로 설정합니다.
아래의 코드는 1에서 100 이외의 값이 복사&붙여넣기가 되지 않도록 하는 예제 코드입니다.
private void C1FlexGrid1_KeyDown(object sender, KeyEventArgs e) { if (c1FlexGrid1.Col != 1) return; if (e.Control && e.KeyCode == Keys.V) { string text = Clipboard.GetText(); if (string.IsNullOrEmpty(text)) return; //복사한 값이 정수인 경우 if (int.TryParse(text, out int copyValue)) { //C1NumericEdit에서 입력 가능한 범위를 가져옵니다. ValueInterval vi = _numericEdit.PostValidation.Intervals[0]; //숫자가 범위 내에 있는지 확인합니다. bool maxValid = copyValue <= Convert.ToInt32(vi.MaxValue); bool minValid = copyValue >= Convert.ToInt32(vi.MinValue); //결과에 따라 e.Handled의 값을 설정합니다. e.Handled = !(maxValid && minValid); } } }
댓글목록
등록된 댓글이 없습니다.