2010-12-17 2 views
0

제가 일하는 회사는 비정상적으로 오래된 데이터베이스 시스템과 비 ASCII 문자가 발생할 때 하드 오류를 발생시키는 많은 레거시 응용 프로그램을 가지고 있습니다. 전체 .Net winforms 응용 프로그램에서 입력을 제한된 문자 집합으로 제한하는 방법은 무엇입니까? (vb.net/c#)

는 그 애플리케이션들이 vb.net의 윈폼 응용 프로그램의 백 엔드를 포장하기 시작 갈 필요가 실현 때문에, 이러한 오래된 시스템을 포장의 1.5 년 후에 그들은이 버그를 발견했다.

그들은 문제를 해결하기 위해 나를 고용했습니다. :

대부분의 경우 UI는 DevExpress와 같은 제 3 자의 데이터 바인딩 및 FormView-esque 솔루션을 사용하여 작성되었으므로 UI를 분해하고 비슷한 중간 유틸리티 함수로 재구성해야합니다 다음에 모든 텍스트 상자는 기본적으로하는 동작 많은 웹 브라우저와 유사한 ASCII를 처리 할 수 ​​있도록

TextBox.Text = Sanitize(dataObject.Value); 
and 
dataObject.Value = Sanitize(TextBox.Text); 

내가 응용 프로그램은 CultureInfo (또는 다른 속성)를 해킹 할 수있는 방법을 찾고 있어요에 보인다 전시.

또한 메모로 : 많은 텍스트 입력은 dev에서 표현하므로 심지어는 사용중인 텍스트 상자가 래핑됩니다.

만 ASCII 또는 UTF-8/UTF-7을 처리 할 수있는 컨트롤을 양식 'ControlAdded 이벤트에 연결하고 설정하는 아마 방법이 있나요?

누군가가이 문제를 겪었습니다. 내가 놓을 수있는 끔찍한 해킹이 없다면이 앱을 모두 고치는 데 2 ​​년이 걸릴 것입니다.

답변

1

당신은 재귀 적으로 모든 텍스트 상자를 수정할 수있는 각 양식에 대한 ControlAdded를 처리 할 수 ​​있습니다.

그런 다음 문자가 마음에 들지 않으면 KeyPress 이벤트를 처리하고 e.Handled = true을 설정하십시오.

DevExpress 편집기의 경우 TextEdit 또는 TextBoxMaskBox을 처리해야하지만 둘 다를 처리해야합니다.