2013-07-24 2 views
-4

텍스트 상자를 사용 중입니다. 내 문제는 여기에 ...텍스트 길이가 최대 허용 텍스트를 초과합니다.

최대 텍스트 길이에 도달하면 프로그램에서 더 이상 입력을 허용하지 않는 처리기가 이미 있습니다. 나는 누르면 (예를 들어, 문자 A를) 키를 누르고 있으면

private void txtText_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (txtText.Text.Length > MaxLengthAllowed - 1 && e.KeyChar != 8) 
    { 
     e.Handled = true; 
     Console.Beep(2000, 90); 
     return; 
    } 
} 

지금 내 문제이며, 그 다음 신호음을 울리는 "MaxLengthAllowed"를 초과 : 여기에 코드입니다.

이 오류는 텍스트 상자의 제한 사항입니까? 또는 나는 무엇인가 놓치고 있냐?

이 코드는 키를 누르고 있지 않을 때 잘 동작합니다. 그러므로, 그것은 내 문제입니다.

+0

삐 소리가 바로'Console.Beep (2000, 90);'? –

+1

경고음이 울린 후 * 경고음이 울립니다. – James

+0

@Sriram Sakthivel - 예, 최대 문자 텍스트에 도달하면 경고음을 내고 있습니다. –

답변

1

텍스트 상자의 MaxLength 속성을 설정하기 만하면됩니다.

textboxVar.MaxLength = maxLengthAllowed; 

희망 사항.

언제든지 PropertyChanged 이벤트를 구독 할 수 있습니다.이 이벤트는 텍스트 상자의 Text 속성이 변경 될 때마다 실행될 수 있습니다. 방법을 읽어보십시오 raise an event on Property Change

+0

고맙습니다. 덕분에 여러 줄로 된 텍스트 상자를 사용하고 있습니다. 나는 그것을 더 단순하게 만들기 위해 그런 질문을했다.여기 내 원래의 게시물 방법은 다음과 같습니다 : http://stackoverflow.com/questions/17079046/is-there-a-way-to-catch-maximum-length-per-line-and-not-allow-user-to-input -more –

+0

@JackFrost 원래 게시물을 읽은 후에 나는이 질문이 완전히 다른 의미를 전달한다고 말할 수 있습니다. – Ehsan

+0

당신은 말할 수 있습니다. 그래서 내가 새 게시물을 만들었습니다. 여기있어, 내 문제는 텍스트 길이가 MaxLengthAllowed 때 사용자가 키를 HOLDS 때 ... –

0

대신 KeyUp 이벤트를 사용할 수 있습니다. 열쇠를 놓으면 한 번만 발동합니다. KeyPress는 키를 누르고있는 동안 여러 번 해고됩니다.

+0

당신은 "당신이 키를 릴리스하면 한 번만 해고"하지만 내 코드를 ALMOST로 처리 할 수 ​​있습니까? 예 : MaxLengthAllowed = 15; 이제는 내 게시물에있는 키를 누르고 있으면 텍스트 길이가 17을 초과하고 때로는 무한대가 아닌 19까지만 초과됩니다. –

+0

내가 볼 수있는 한, 키를 놓을 때까지 코드가 무기한 실행됩니다. 텍스트 길이가 허용되는 최대 길이보다 같거나 길면 경고음이 계속됩니다. – FreddieH

0

TextBox.KeyPress이 (가) 실행되면 TextBox.Text은 업데이트되지 않습니다. 예를 들어 TextKeyPress보다 작 으면 A이고 사용자가 B을 입력하면 KeyPress 이벤트 핸들러에서 Text이 여전히 A (AB 아님)입니다. 따라서 MaxLengthAllowed을 원하는 값보다 1 작게 정의해야합니다. 코드는 다음과 같아야합니다

private void txtText_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if ((txtText.Text.Length > MaxLengthAllowed - 1) && e.KeyChar != 8) 
    { 
    e.Handled = true; 
    Console.Beep(2000, 90);  
    } 
} 

내가 대신 TextBox.MaxLength 속성을 사용한다고 생각, 그것은 또한 Beep 지원의 Beep soundConsole.Beep()에 의해 생성 된 Beep보다 더 좋네요.

+0

고마워요.하지만 코드를 검토 한 결과, 이미 "MaxLengthAllowed - 1" –

+0

@JackFrost 인 경우 문제가 재현되지 않아 원하는 최대 길이를 초과 할 수 없습니다. –

+0

그게 내가 생각한 것 뿐이야. 내 코드를 다음에 보자. 하하하. 좀 실망 스럽군요. : ( –

관련 문제