0

我有一个当前正在使用 SDK 的简单应用程序,但这会导致内存问题,并且我还希望该应用程序可以在多种手持扫描仪类型上运行,而无需针对每个平台重做,如果可能的话。所以我决定使用数据楔。

扫描的文本从数据楔读入文本框(一次一个字符),问题是来自扫描仪的输入可以是不同的长度,所以我需要捕获默认的 [CR][LF](马车返回和换行)在后置码中设置的字符。

我尝试将字符串的最后一个字符与 Chr(13) 和 Chr(10) 进行比较,但无法正常工作。我正在使用文本框的 TextChanged 属性来检查框的输入 -

     Private Sub tbx_Scan_TextChanged() Handles TBX_Scan.TextChanged

如果找到行尾,则希望从此函数返回有效结果

     Public Function CheckLocationInput(ByVal inputString As String) As String

      If (Len(inputString) >= 5) And (Len(inputString) <= 40) Then
          If inputString.Contains(Environment.NewLine) Then
              Return "VALID"  'Opens the Item Input Screen
          End If

但是 [CR] 和 [LF] 字符似乎没有输入到文本框中,或者至少看不到阅读。基本上我要做的就是检查数据楔形输入的结尾。如果我将后同步码更改为字符串,我可以做到这一点,例如 '~E%'

我知道反对这样做的论据,但它应该是一个简单的应用程序,所以我很感激不,“你应该使用 SDK”的答案。

那么使用 VB.net 和/或 C# 从 data-wedge 输入捕获不可打印字符的最佳方法是什么?

谢谢你。

4

1 回答 1

0

I couldn't get this reading a non-printable character from the end of the input to a text box. but I did manage to get around it by putting the following in the form. Then using Barcoding as my input string, as this does contain the non-printable codes at the end.

Imports System.Text
  Public Class frm

Private Barcode As StringBuilder

Private Sub frm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.KeyPreview = True
    Me.TBX_Scan.Focus()
    Barcode = New StringBuilder()
End Sub

Private Sub frm_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
    Barcode.Append(e.KeyChar)
End Sub 
于 2015-02-17T09:55:09.373 回答