호프 사용자는 WPF의 KeyDown 이벤트에서 텍스트 상자에 영숫자와 공백 만 입력 할 수 있도록 할 수 있습니까? 특수 문자는 허용되지 않습니다.텍스트 상자에는 영문자, 숫자 및 공백 만 포함됩니다.
답변
확인 텍스트 상자의를 keyDown 이벤트 및 수행이 도움이 될 것입니다
// If escape is presses, then close the window.
if(Key.Escape == e.Key)
{
this.Close();
}
// Allow alphanumeric and space.
if(e.Key >= Key.D0 && e.Key <= Key.D9 ||
e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9 ||
e.Key >= Key.A && e.Key <= Key.Z ||
e.Key == Key.Space)
{
e.Handled = false;
}
else
{
e.Handled = true;
}
// If tab is presses, then the focus must go to the
// next control.
if(e.Key == Key.Tab)
{
e.Handled = false;
}
희망 ......
문자가 이미 TextBox에 추가되었으므로 KeyDown 이벤트 처리기가이 작업을 수행하는 데 가장 적합하지 않을 수 있습니다. PreviewKeyDown 이벤트에 응답하여 이벤트가 계속되는 것을 막을 수는 있지만 알 수없는 결과가 발생할 수 있습니다.
한 가지 방법은 ValidationRule을 TextBox에 연결하는 것입니다. 이것은 사용자가 캐릭터를 입력하는 것을 멈추지는 않지만 그것이 허락되지 않는다는 것을 알려줄 것입니다. 사용자가 잘못된 문자를 입력
<TextBox>
<TextBox.Text>
<Binding Path="MyString"
UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<myns:MyValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
때마다 :
public class MyValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
// Logic to determine if the TextBox contains a valid string goes here
// Maybe a reg ex that only matches alphanumerics and spaces
if(isValidText)
{
return ValidationResult.ValidResult;
}
else
{
return new ValidationResult(false, "You should only enter an alphanumeric character or space");
}
}
}
그리고 다음과 같이 XAML에서 사용 : 이런 식으로 뭔가를 얻기 위해 당신이 System.Windows.Controls.ValidationRule에서 파생 된이 작업을 수행하려면 그들은 오류 메시지를 받게됩니다. 희망은 그것이 사용하는 것입니다.
로 또한 텍스트 상자의 PreviewTextInput 이벤트를 사용할 수 있습니다.
<TextBox Name="txtName" PreviewTextInput="txtName_PreviewTextInput"/>
그리고 뒤에 코드에 다음을 추가합니다
private void txtName_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
foreach (char c in e.Text)
{
if (!char.IsLetterOrDigit(c))
{
e.Handled = true;
break;
}
}
}
나는 그에게에서 KeyDown을 사용하는 것이 좋습니다 생각이 donot. Backspace, Delete 및 Tab 키도 처리해야합니다.
대신 : 핸들 PreviewTextInput PasteHandler의
private void OnPreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!IsMatch(e.Text)) e.Handled = true;
}
private bool IsMatch(string input)
{
return Regex.IsMatch(input, MyRegexString);
}
다음 취해야 관리 : 생성자 행 다음에 추가.
DataObject.AddPastingHandler(TargetTextBoxName, PasteHandler);
private void PasteHandler(object sender, DataObjectPastingEventArgs e)
{
if (!e.DataObject.GetDataPresent(typeof(string))) return;
// Allow pasting only numeric
var pasteText = e.DataObject.GetData(typeof(string)) as string;
if (!IsMatch(pasteText))
{
e.CancelCommand();
}
}
정규식 될 것 "^ [A-ZA-Z0-9]" – kkk
- 1. Asp.net RegularExpressionValidator 숫자, 문자 및 공백 만
- 2. .NET Regex, 숫자 만 공백 없음
- 3. 문자열에 Java의 문자, 숫자 및 공백 만 포함하는 Regexp
- 4. Mod 재 작성, 문자, 숫자 및 공백 만 허용해야 함
- 5. Regexp : 숫자 및 공백 확인
- 6. 텍스트 상자에 숫자 만 표시
- 7. 문자열을 첫 번째 문자 (영문자 및 숫자)로 그룹화
- 8. 영문자 또는 공백 문자가 아닌 행을 검색하려면 어떻게합니까?
- 9. 입력 한 텍스트에 영문자 만 사용하는지 확인하십시오.
- 10. 유효성 검사 텍스트 상자에 숫자 만
- 11. 텍스트 상자에 숫자 문자 만 허용 하시겠습니까?
- 12. 플렉스 : 숫자 만 허용하는 텍스트 입력
- 13. Zend_Validate_Regex - 문자, 숫자 및 문자 만 허용 -_
- 14. mysql으로 숫자 만 검색하기
- 15. 숫자 만 html 양식
- 16. IE7 및 Chrome 페이지의 공백 문자 만
- 17. 만 일치 공백 내부 {}
- 18. 하나의 공백 만
- 19. 개체에 키 쌍의 공용 절반 만 포함됩니다.
- 20. 숫자 만 생성하는 정규식
- 21. 특수 문자 및 영문자 스캔 문자열
- 22. 텍스트 상자에서 공백 그리기
- 23. 둥근 괄호 사이에 숫자/연도 만 허용
- 24. 문자, 숫자 및 각 단어 사이의 공백 만 일치시키는 데 사용할 수있는 정규식은 무엇입니까?
- 25. 소프트 키보드 - 숫자 만
- 26. 입력 텍스트 필드에 공백 만 포함되어 있는지 확인하는 방법은 무엇입니까?
- 27. 소리 만들기 - 영문자 읽기 -
- 28. ASP.NET 응용 프로그램에서 쉼표 (,) 및 숫자 만 허용하는 텍스트 상자에 대한 유효성 검사를 수행하는 방법은 무엇입니까?
- 29. 텍스트 입력에 숫자 만 허용하고 JavaScript로 명령을 허용하는 방법은 무엇입니까?
- 30. 영숫자 텍스트 만 필터링하십시오.
BTW 핸들러에 대한 서명은 : 개인 무효 OnKeyDownHandler (객체 송신자 KeyEventArgs E) – Jeff