2013-04-07 7 views
1

C#에서는 사용자 유형이 textbox 인 모든 char을 어떻게 캡처 할 수 있습니까?사용자가 입력 할 때 모든 문자를 입력란에 입력하는 방법은 무엇입니까?

사용자가 Hello World을 입력하면이 함수는 각각 char을 캡처하여 처리합니다.

입력 할 때 모든 텍스트를 매우 정확하게 제어해야합니다. textbox에서 유효하지 않은 모든 문자를 삭제하고 사용자가 특정 문자를 쌓아 올리면 다른 문자를 사용하여 기능을 수행합니다 .

예 : 모든 알파벳 문자를 읽어됩니다 각 숯불로

:

사용자 유형은이 내가이 혼란을 조작하는 방법입니다 textbox

Blarg Blarg 600*50-90blarg

에 다음과 메모리 및 텍스트 상자에서 삭제되므로 사용자가 입력 한 내용을 볼 수 없습니다.

그래서 첫 번째 부분은 심지어, 표시되지 않습니다 다음 경우 텍스트 상자에 붙어 다음 0 다음 0 그래서 결국 사용자에게 표시되는 내용을 600 인 사용자 유형 6. 그런 다음 사용자가 *을 입력하면 화면에서 삭제되지만 텍스트 상자에서 번호를 가져와 다음 자릿수를 기다리는 기능이 작동합니다. 나는이 대부분이지만 키보드에서 사용자 입력 유효성 검사를 처리 할 수 ​​

C#을

그래서 문제가 쉽지 않다 : 그들은 바로 키의 와서 나는 각 문자에 코드를 작동 할 수 있습니까?

답변

4

간단한, 당신과 같이 KeyPress 이벤트를 사용 : 당신은 단지 문자를 particluar 허용하도록 텍스트 상자를 사용하는 경우

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    char c = e.KeyChar; 

    if (c >= 48 && c <= 57) 
    { 
     // numeric value 
     // do something 
    } 
    else if (c == 42) 
    { 
     // multiply (*) 
     // do something 
    } 
    else if (c == 47) 
    { 
     // divide (/) 
     // do something 
    } 
    else if (c == 13) 
    { 
     // enter key 
     // do something 
    } 
    else 
    { 
     // discard 
     e.Handled = true; 
    } 
} 
+1

"TextChanged"를 사용할 수도 있지만,이 경우에는 문자를 누르지 않습니다. – gunr2171

+0

Aders, 어떻게 입력 된 Chars가 텍스트 상자에로드되는 것을 멈출 수 있습니까? 텍스트 상자에 어떤 내용이로드되는지 정확히 제어하려고합니다. – Joseph

+1

제 편집문을 참조하십시오. 이것이 가능한 한 방법입니다. 'KeyPressEventArgs.Handled'를 true로 설정하면 키 누르기를 이미 처리 했으므로 다른 것을 할 필요가 없다는 것을 컨트롤에 알려주므로 키를 삽입하지 않습니다. –

1

:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    char c = e.KeyChar; 
    // your code here 
} 

당신은 다음과 같이 숯불 정보를 분석 할 수 입력으로 MaskedTextBox을 사용해보세요.

관련 문제