2015-01-07 1 views
0

바코드 스캐너 및 텍스트 이벤트가 변경된 텍스트 상자가 있습니다. 내가 뭘 하려는지는 사용자가 코드를 스캔하면 텍스트 박스에 들어가서 SQL을 수행하는 코드를 얻는다는 것이다. 문제는 texbox가 변경된 텍스트 이벤트로 인해 전체 문자열이 아닌 첫 번째 문자의 문자를 허용한다는 것입니다.바코드 스캐너 및 바뀐 이벤트가 포함 된 텍스트 상자

사용자가 제품을 삽입하기 위해 추가 버튼을 누를 필요가 없기 때문에 갖고 싶습니다. 바코드 캡처를 시도했지만 문자열에 저장했지만 작동하지 않습니다.

어딘가에 있습니까?

답변

1

코드의 길이가 항상 같으면 텍스트 변경 이벤트에서 길이를 검사하고 코드가 올바른 길이가 될 때까지 데이터베이스 작업을 연기 할 수 있습니다.

코드의 길이가 가변적이면 더 영리해야합니다.

  • 텍스트 변경 이벤트 대신 포커스 변경 이벤트를 사용하여 텍스트 상자가 포커스를 잃을 때까지 데이터베이스 작업이 실행되지 않을 수도 있습니다.
  • 바코드 스캐너를 프로그래밍하여 문자열 끝 부분에 특정 문자를 추가하고 해당 문자를받을 때까지 데이터베이스 작업을 연기하십시오.
  • 타이머를 사용하여 데이터베이스 작업을 지연합니다. 예를 들어 전체 코드가 500ms 이내에 입력된다는 것을 알고있을 수도 있습니다. 그냥 500ms를 기다렸다가 텍스트 변경 이벤트를 버리십시오.
+0

포커스가있는 곳에서 관리했습니다. 감사합니다. –

1

대부분의 바코드 스캐너는 스캔 한 데이터의 끝에 키 시퀀스를 추가 할 수 있습니다. 많은 사람들은 단순히 CRLF를 사용합니다. 텍스트 상자의 keypress 이벤트에서이를들을 수 있으며,이를 사용하여 SQL 코드를 실행할 수 있습니다.

일반적으로 모토로라 스캐너에는이를 설정하기 위해 바코드가있는 빠른 시작 안내서가 있습니다.

+0

아마도 프로그램의 다른 해결 방법은 무엇일까요? 스캐너가 학교에서 나왔어. 아무것도 바꿀 수 없어요. + 스캐너 주변에서 정말 잘 모르겠군요. –

1

나는 같은 해를 보냈다. 먼저 실제 바코드 문자열 다음에 독자가 최종 캐리지 리턴 문자를 보내는 지 확인하십시오. 일반적으로 판독기와 함께 장치 구성에 사용할 수있는 특정 바코드가 있습니다.

장치와 운이 좋지 않은 경우 이벤트 구현을 비동기로 설정하고 SQL을 실행하기 전에 200ms 동안 대기하십시오. 기다리는 시간까지 다른 이벤트가 발생하면 검색에 사용 된 문자열을 변경하거나 이전 이벤트를 중단하고 새 이벤트를 만듭니다.

바코드는 고속 (200ms 미만)에서 I/O를 통해 문자 시퀀스를 푸시하는 키보드이기 때문에 효과가 있습니다.

도움이되기를 바랍니다.

2

바코드를 스캔 한 후 "Enter 키 추가"또는 "탭 키 추가"로 바코드 리더를 구성 할 수 있습니다. 그러면 아래와 같이 사용할 수 있습니다.

private void txtBarcode_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     //Do Something 
    } 
}