2017-04-02 3 views
-1

decimal 다음에 최대 길이가 8자인 양의 정수를 제외하고 사용자가 아무 것도 입력 할 수 없도록하려면 UWP 앱을 개발 중입니다. 그리고 두 개 더 digits. Examples가 나는 TextBox에 다음을 구현해야어떻게 사용자가 TextBox에 양수가 아닌 다른 값을 입력하지 못하도록

12345.50, 
123456.50, 
123.23 

수 있습니다. 나는 Shift 키를 키보드에서 사용하지 못할와 숫자가이 코드를 쓴 Numeric 키보드 (both)

에서 입력 할 필요가 있지만 특수 문자와 shift 키를 받아들이고 있는지 확인하고 싶습니다.

입력의 하나의 모드가 존재한다고 가정하자 그에만 keyboard

private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e) 
     { 
      if ((!char.IsControl(Convert.ToChar(e.Key)) && !char.IsDigit(Convert.ToChar(e.Key)) && 
     (Convert.ToChar(e.Key) != '.'))) 
      { 
       e.Handled = true; 
      } 
     } 

답변

0

귀하의 가정이 적 으면서되는 실제 시나리오를 통해입니다. 사용자가 키보드 이외의 데이터를 입력하는 것을 막을 수는 없습니다. 음성, 잉크, IME, 자동 제안 등은 모두 KeyDown 이벤트를 거치지 않고 TextBox에 텍스트를 입력합니다.

텍스트 상자를 보장 할 수있는 유일한 방법은 당신 유효한 형식 만이 수신됩니다 도착 후 : TextChanging,의 TextChanged, LostFocus에 제출 버튼 입력 등

히트 수용 요구 사항은 자체에 포함 된 TextChanging이기 때문에 아마도 가장 좋은 장소입니다. 텍스트가 허용되고 제거되고 문자가 유효하지 않은지 확인하십시오. 사용자가 유효한 입력을받을 수 없도록 제한하지 않도록주의하십시오. "."을 거부하지 마십시오. 사용자가 해당 숫자를 입력하기 전에 두 자리가옵니다.

다른 옵션 (두 필드가 서로 다른 경우 훨씬 좋음)은 사용자가 잘못된 입력을하도록 유도하지만 다음과 같이 알려주는 것입니다. 잘못된 입력을 남겨두고 잘못된 것으로 표시하고 이전에 양식을 승인하지 마십시오. 결정된.

또한 나뿐만 아니라 MSDN에 게시 된 비슷한 질문에 대한 답변을 읽고 http://docs.uwpcommunitytoolkit.com/en/master/controls/TextBoxMask/

+0

에서 UWP 커뮤니티 툴킷의 TextBoxMask 속성을 살펴. 사실이 UWP 앱은 OS에서 제공하는 키보드만을 사용하여 입력을받습니다. – Apoorv

관련 문제