2012-10-16 2 views
0

친애하는 모든 우리는 거의 98 개의 양식으로 구성된 hr 응용 프로그램 (winform)을 개발했으며 조직에서 테스트했습니다. 그러나 지금 문제는 관리인이 모든 데이터 입력을 대문자로 바꾸기를 원합니다. 우리는 모든 컨트롤에 문자 케이싱을 설정하지 않았으며 이제는 모든 컨트롤에 문자 케이싱을 변경하는 데 거의 위험합니다.응용 프로그램에서 alla textinput 컨트롤을 대문자로 변환

입력을 대문자로만 제한하는 방법을 제안 하시겠습니까? Program.cs 파일에서 몇 가지 시도를했습니다. 그러나 작동하지 않는 것 같습니다.

또한 textbox.textchanged 이벤트를 덮어 쓰려고 시도했지만 어리석은 아이디어 인 것 같습니다. 더 많은 아이디어가 새로운 bie를 개발할 때 고려하시기 바랍니다.

답변

0

KeyPreview 이벤트를 살펴보면 모든 입력을 제어 할 수 있습니다. 초점은 어디에 있든간에

나는 지금까지 텍스트 상자를 텍스트 상자를 직접 구현하여 모든 텍스트 상자를 바꾸는 것이 가장 간단하다고 말했을 것이다.하지만이 방법을 좀 더 단순하게 변경하는 것이 좋지만 KeyPreview는 효과가있다. 이 이상한 요구 사항이지만

+0

Program.cs –

2

, 당신은 LINQ를 사용할 수 있습니다에 "상위 텍스트"모든 텍스트 상자-컨트롤 :

var allTxt = from form in Application.OpenForms.Cast<Form>() 
      from txt in form.Controls.OfType<TextBoxBase>() 
      select txt; 
foreach (var txt in allTxt) 
    txt.Text = txt.Text.ToUpper(); 

Application.OpenForms 반환 응용 프로그램 및 TextBoxBase 소유 열려있는 모든 형태의 텍스트의 기본 클래스입니다 -controls (TextBox, RichTextBox). TextBoxBase에 대한 필터는 Enumerable.OfType입니다.

컨트롤에 대해 재귀 적으로 검색하지 않습니다. 현재 상위 컨트롤 컨테이너 만 검색됩니다. 재귀 적 검색이 필요하다면 this과 같은 것을 구현하십시오.

+0

에서 응용 프로그램을 설치할 때 구현할 수 있다고 생각하지만 어디에서이 기능을 호출 할 수 있습니까? –

+0

@sreenathsreenath : 원하는 곳 어디서나 (예 : 버튼 클릭 이벤트 처리기 내에서). –

+0

수업 중에 설정할 수 있습니까? 프로그램로드시 부하? –

관련 문제