2010-07-15 8 views
0

난 간단한 C# Winform 응용 프로그램을 만들고있어. 텍스트 상자가있는 양식이 있습니다. 화살표 키로 텍스트 상자의 위치를 ​​변경하고 싶지만 텍스트 상자에 입력 포커스가 있으므로 양식의 KeyDown 이벤트가 호출되지 않습니다. 입력 포커스를 제거하려면 어떻게해야합니까?입력란에서 입력 포커스를 제거하려면 어떻게해야합니까?

텍스트 상자에 입력 할 수 있어야합니다. 더미 레이블을 만들고 초점을 맞추려고하지만 작동하지 않습니다. 아무 키나 누르면 커서가 텍스트 상자로 돌아갑니다. 도와주세요. 이 문제를 어떻게 해결할 수 있습니까?

답변

0

음, 이해할 수 있는지 확실하지 않습니다. 사용자가 편집 상자에 입력 할 수 있으면 포커스를 가질 수 있습니다. 그가 바깥 쪽을 클릭하면, 공란에 양식이 있고 초점이 없어집니다.

1) 편집 상자에 입력하고 2) 편집 상자를 이동하려면 "이동 모드"를 입력하는 별도의 메커니즘이 필요합니다.

"선택한 컨트롤을 이동하려면 여기를 클릭하십시오."버튼이나 "컨트롤 이동 옵션"이있는 컨트롤에서 오른쪽 클릭 컨텍스트 메뉴를 제안합니다.

또한 사용자가 이동이 종료되었음을 나타내는 방법을 고려해야합니다.

희망이 도움이됩니다.

+0

아이디어를 제공해 주셔서 감사합니다! 두 가지 모드로 구분하여 잘 작동합니다. 이것은 나에게 좋다. 고맙습니다. – Shongky

1

TextBox.KeyDown 이벤트를 처리하십시오. 그리고 TextBox를 이동 한 후에 반환하기 전에 핸들러에 e.Handled = true;을 설정하십시오. 그리고, 예, 화살표 키 만 조작하십시오.

+0

+1 및 화살표 키 필터? 좋은 생각. – Mawg

+0

답변 해 주셔서 감사합니다. 좋은 생각입니다. 편집이 가능해야합니다. 이렇게하면 '움직이는 텍스트 상자'를 확인하게됩니다. 그러나 '움직이는 커서'는 그렇지 않습니다. 나는 가난한 설명에 대해 유감이다. – Shongky

+0

오, 다른 답변에서, 아마 그 처리기를 선택했는지 아닌지에 대한 코드를 넣을 수 있습니다. 예를 들어 If (IsMoveMode) {if (e.keyCode == Keys.Left) bula bula ~~~ – Shongky

0

참고 : 방금이 브라우저가없는 C# 응용 프로그램도 아닙니다. 나는이 모든 것을 무시한 것 같다. 충분히주의 깊게 읽지 않으려면 나를 올바르게 부양한다.


를 사용하여 자바 스크립트, 특히, 나는 개인적으로 jQuery을 권 해드립니다.

그들은 꽤 잘 자신의 라이브러리 문서화 :이 특정 작업을 위해 http://docs.jquery.com/Main_Page

, 당신은 키 이벤트의 일종. (즉, keypress)를 결합 할과 (이벤트 전파를 중지해야합니다거야 있도록 전송 될 디폴트 응답이 텍스트 박스 요소의 기본 청취자에 의해 간단히 처리되는 것을 방지). 당신이 키 누르기 (어쩌면 화살표 키)를 사용하여 텍스트 상자의 위치를 ​​변경 같은 것을 수행하려는 경우

그래서, 당신에게 아이디어를주고 :

/* link the jQuery source to the HTML page with script tag */ 
<script src="jquery.js" type="text/javascript"></script> 
<script type="text/javascript"> 

/* short hand for $(document).ready(function() { ... */ 
$(function() { 

    $("#textbox_id").keypress(function(e) { 
     var $this = $(this); // store the #textbox_id element in $this 
     e.preventDefault(); 
     switch (e.keyCode) { 
      // find the actual integer code for the up arrow 
      case UP_ARROW: 
       $this.animate({ 
        top : '-=10px' 
       }, 100); // time in milliseconds to complete the animation 
      /* fill in the cases */ 
     } 
    } 

}); 

좋아을, 나는 당신이 사진을 얻을 희망 . animate() 및 기타 jQuery 함수에 대한 자세한 내용은 위에 제공된 링크의 설명서를 참조하십시오. 희망이 도움이됩니다!

참고 : 분명히 이벤트의 기본 처리를 방지하는 것은이 경우 내게 필요한 옵션 때문에 끔찍한 생각입니다. 이러한 이동 이벤트를 발생시키기 위해 키 누름을 선택할 때 최선의 판단을 사용하십시오. 무엇을 하든지 사용자가 입력 필드에있는 텍스트 내에서 이동하지 못하게하지 마십시오.

+0

답변 해 주셔서 감사합니다. 흠. 나는 또한 Default handlng :)을 필요로 할 것이다. 어쩌면 나는 핸들러를 디폴트로 선택하거나 이동을위한 스위치를 넣을 수있다. 고맙습니다. – Shongky

+0

네, 죄송합니다. 질문을 잘못 해석했습니다. 바라건대 당신은이 반응에서 뭔가를 가져 왔습니다. 행운을 빌어 요! –

관련 문제