! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

[FlexGrid Winforms] C1NumericEdit으로 값을 복사&붙여넣기 시 입력범위를 초과하는 값 제어하는 방법 > 지식 쉐어링

본문 바로가기

ComponentOne

지식 쉐어링

샘플공유 [FlexGrid Winforms] C1NumericEdit으로 값을 복사&붙여넣기 시 입력범위를 초과하는 값 제어하는 방법

페이지 정보

작성자 MESCIUS싸이먼 작성일 2023-11-21 18:25 조회 25회 댓글 0건

본문

첨부파일

안녕하세요.

메시어스 입니다.


C1NumericEdit에는 상한 및 하한 값을 설정하는 기능이 있습니다. 

그래서 C1FlexGrid의 편집기로 사용하는 경우 키보드로 입력하면 설정한 입력 범위를 초과할 경우 C1NumericEdit의 유효성 검사에 따른 경고 표시 및 입력 제어가 이루어집니다.

하지만 클립보드에서 복사한 값은 설정한 입력 범위를 초과하더라도 표시됩니다.

이러한 동작을 피하고 값의 범위를 초과하는 입력을 방지하려면 C1FlexGrid의 KeyDown 이벤트를 사용할 수 있습니다.


  1. KeyDown 이벤트에서 먼저 복사된 값이 C1NumericEdit에서 정의한 상한 및 하한 범위 내에 있는지 확인합니다. 
  2. 그런 다음 해당하지 않는 경우 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);
        }
    }
}


  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.