Pemindai kode batang mendekode kode menjadi desimal (3 digit) jika saya menggunakan evtkeyupeven

pemrograman


Pemindai kode batang “pemindai logika data pemindaian cepat qd2430 ” membaca kode dalam format teks ketika saya memfokuskan kotak teks apa pun tetapi kode tersebut didekode menjadi Desimal (3 digit) jika saya menggunakan evtKeyUpEvent

jadi, itu mengubah kode ini “33378755971180” ke “051 051 051 055 056 055 053 053 057 055 049 049 056 048

Apa yang saya coba:

private string BarCode = "";
   private void evtKeyUpEvent(object sender, KeyEventArgs e)

   {
       if (Keys.NumPad0 <= e.KeyCode && e.KeyCode <= Keys.NumPad9)
       {
           BuildBarCode((e.KeyCode - Keys.NumPad0).ToString());
       }
       else if (Keys.D0 <= e.KeyCode && e.KeyCode <= Keys.D9)
       {

           BuildBarCode((e.KeyCode - Keys.D0).ToString());
       }
       if (65 <= e.KeyValue && e.KeyValue <= 90)
       {
           BuildBarCode((e.KeyCode).ToString());
       }
       else if (Keys.ShiftKey == e.KeyCode)
       {
       }
       else if (Keys.OemPeriod == e.KeyCode)
       {
           BuildBarCode(".");
       }
       else if (Keys.Multiply == e.KeyCode)
       {
           BuildBarCode("*");
       }
       else if (Keys.Add == e.KeyCode)
       {
           BuildBarCode("+");
       }
       else if (Keys.Separator == e.KeyCode)
       {
           BuildBarCode("|");
       }
       else if (Keys.Subtract == e.KeyCode)
       {
           BuildBarCode("-");
       }
       else if (Keys.Divide == e.KeyCode)
       {
           BuildBarCode("/");
       }
       else if (Keys.OemBackslash == e.KeyCode)
       {
           BuildBarCode(@"\");
       }
       else if (Keys.Separator == e.KeyCode)
       {
           BuildBarCode(",");
       }
       else if (Keys.OemMinus == e.KeyCode)
       {
           BuildBarCode("-");
       }

       else if (Keys.Space == e.KeyCode)
       {
           BuildBarCode(" ");
       }
       else if (Keys.OemCloseBrackets == e.KeyCode)
       {
           BuildBarCode(")");
       }
       else if (Keys.OemOpenBrackets == e.KeyCode)
       {
           BuildBarCode("(");
       }
       else if (Keys.Oemtilde == e.KeyCode)
       {
           BuildBarCode("~");
       }

       else if (Keys.Oemcomma == e.KeyCode)
       {
           BuildBarCode(",");
       }
       else if (Keys.OemSemicolon == e.KeyCode)
       {
           BuildBarCode(";");
       }
       else if (Keys.OemSemicolon == e.KeyCode)
       {
           BuildBarCode(";");
       }


       else if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
       {
           updateUIBarCode(BarCode);
       }
   }
   private void BuildBarCode(string value)
   {
       BarCode = string.Concat(BarCode, value);
   }
   public void updateUIBarCode(string i)
   {
       AddNewRowWithCode(i);
   }

Solusi 1

Sepertinya pembaca kode batang berfungsi dalam mode keyboard wedge. Artinya, ia mengemulasi keyboard.

Pertama, Anda mempersulit diri Anda sendiri dengan mengikat acara KeyUp. Jika ini adalah TextBox maka cukup lihat properti Text ketika tombol enter ditekan dan akan ada barcode Anda di dalamnya.

Jika Anda harus menggunakan acara KeyUp, hapus sebagian besar kode di evtKeyUpEvent, kecuali untuk memeriksa kunci enter dan gunakan KeysConverter untuk mengonversi dari KeyCode ke string.

コメント

タイトルとURLをコピーしました