2012-05-08 3 views
4

여러 줄로 설정 한 양식에 간단한 검색 필드가 있습니다 (텍스트 상자의 높이를 변경하는 유일한 방법 인 것으로 알고 있음) AcceptsReturn 플래그를 false로 설정했습니다.Accepts TextBox가 올바르게 작동하지 않음

그러나 컨트롤에서 Enter 키를 누르면 기본 단추가 활성화되는 대신 반환 문자가 입력됩니다.

이제 KeyPress 이벤트를 사용하여이 반환 동작을 재정의 할 수 있도록 Enter 키가 눌러져 검색 단추 클릭 기능을 활성화했는지 확인하려고 시도했습니다. 이제 검색을 실행하고 리턴 문자를 삽입합니다.

저는 Visual Studio 2010을 실행하고 있습니다 (이 문제는 변환하기 전에 2008 년에도 발생 했음). C# .NET 2.0. 어떤 해결책?

+0

"C# .NET"등으로 제목을 미리 지정하지 마십시오. 그것이 바로 태그가있는 것입니다. 또한, 나는 이것이 Windows Forms라고 추정합니까? –

+0

맞습니다. – CJxD

+2

방금 ​​문제가 발생하지 않고 복제하려고 시도했습니다. button과 text box (multiline)로 새로운 폼을 만들었습니다. 나는 textbox.acceptreturn을 false로 설정했습니다. 그리고 폼 승인 단추를 button1 (내 단추)로 설정하면 단추 클릭 이벤트가 messagebox를 시작했습니다. 뭔가를 입력하고 엔터를 누르면 messagebox가 시작되고 텍스트 상자에 반환 문자가 추가되지 않았습니다. Forms accept 버튼을 설정 하시겠습니까? –

답변

4

이 양식의 내용은 AcceptButton입니다. 단추를 가리키는 것이 기본 단추입니까?

나는 방금 약간의 테스트를 작성했고 그것은 나를 위해 작동하는 것 같습니다.

+0

그건 사실 문제였다. 필자가 특정 검색 바를 입력 할 때 프로그래밍 방식으로 기본 폼의 수락 단추를 설정할 수 있습니다. 이제 제대로 작동합니다! – CJxD

+1

AcceptsReturn을 true로 설정하면 작동을 멈추는 것에 유의하십시오. 그 재산은 실제로 무엇을합니다. e.SuppressKeyPress = e.Handled = true;를 잊었 기 때문에 텍스트에서 리턴 값을 얻었습니다. –

5

나는 대답이 이미 AcceptButton 속성을 언급하는 게시 된 것을 볼 수 있지만, 나는 더 명확하게 명시 것이다 파악 필요의 왜 : quoth MSDN는 AcceptsReturn에, "형식에 대한 기본 버튼이없는 경우 ENTER 키는이 속성의 값에 관계없이 항상 컨트롤에 새 텍스트 줄을 만듭니다. " (방금 더미 폼에서 시도해 보았습니다. "default button"을 사용하면 실제로 폼의 AcceptButton 속성을 의미합니다. 하나의 세트를 사용하면 AcceptsReturn의 값이 달라 지므로 효과가 없습니다.

KeyPress는 분명히이 경우 가장 좋은 방법은 아니지만 이전에는 그런 트릭을 사용해야했습니다. 직접 이벤트를 처리 한 경우 e.Handled를 true로 설정했는지 기억 했습니까?

+0

e.Handled 팁 덕분에, 나는 이것이 존재한다는 것을 몰랐다! – CJxD

관련 문제