日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Winform让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬

發布時間:2025/6/16 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Winform让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關注點

  • 1、掃描槍在掃描到條碼后會在有焦點的地方顯示掃描到的條碼并且可設置掃碼后添加回車換行讓我很尷尬
  • 2、怎樣攔截掃碼輸入,掃描到條碼就自動會嘀一聲。不要這么智能行不行。瞎BB

需求詳解

公司生產車間要上幾條線的過程管控系統,由于沒辦法實現先進的自動化,全是用手持掃描槍USB接口的那種來作業,來識別產品半成品的標識,進行記錄和管控。方便實現追溯。前人都是拖控件,拖個TextBox就了事,在KeyPress里收到回車換行就認為是一次掃描操作。去年搞了一年多的綜合賦碼軟件,對軟件的動態編譯、和界面腳本分離的做法深深折服,于是隨便參考一把,搭建了自己的業務應用框架。這里講一下其中一點心得就是關于這個小事情的處理。

實現方式說明

/// <summary>/// 響應掃描槍輸入/// </summary>/// <param name="msg"></param>/// <param name="keyData"></param>/// <returns></returns>protected override bool ProcessCmdKey(ref Message msg, Keys keyData){if (msg.Msg == 0x0100 && ContextMenuStrip != null){foreach (ToolStripMenuItem item in ContextMenuStrip.Items){if (keyData == item.ShortcutKeys){item.PerformClick();}}}if (msg.Msg == 0x0100 && keyData == Keys.Enter){string barcode = onceScanData;onceScanData = string.Empty;if (CoreFlowObj != null && FlowContext.Instance.WorkStatus == WorkStatus.Running && !string.IsNullOrEmpty(barcode)){CoreFlowObj.OnExecScanReceiving(TrimSpecialChar(barcode));}elseOnScanReceivingData(TrimSpecialChar(barcode));}else{int key = (int)keyData;if (key >= (int)Keys.A && key <= (int)Keys.Z ||key >= (int)Keys.D0 && key <= (int)Keys.D9 ||key >= (int)Keys.NumPad0 && key <= (int)Keys.NumPad9 || key > 65000){#region 無賴,希望找到更好的辦法if (keyData == Keys.NumPad0)keyData = Keys.D0;if (keyData == Keys.NumPad1)keyData = Keys.D1;if (keyData == Keys.NumPad2)keyData = Keys.D2;if (keyData == Keys.NumPad3)keyData = Keys.D3;if (keyData == Keys.NumPad4)keyData = Keys.D4;if (keyData == Keys.NumPad5)keyData = Keys.D5;if (keyData == Keys.NumPad6)keyData = Keys.D6;if (keyData == Keys.NumPad7)keyData = Keys.D7;if (keyData == Keys.NumPad8)keyData = Keys.D8;if (keyData == Keys.NumPad9)keyData = Keys.D9;#endregiononceScanData += (char)keyData;}}if (FlowContext.Instance.WorkStatus != WorkStatus.Running)return base.ProcessCmdKey(ref msg, keyData);elsereturn true;} 簡單說就是重寫ProcessCmdKey事件攔截處理掃描的輸入。不直接在界面控件的事件里處理,把界面的TextBox都設置成ReadOnly,在窗體的ProcessCmdKey里處理。然后把收到的條碼傳給腳本進行解析。

?

總結

以上是生活随笔為你收集整理的Winform让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。