Winform让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬
生活随笔
收集整理的這篇文章主要介紹了
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让扫描枪听话,防止在有焦点的地方就扫码输入的尴尬的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iframe多窗口
- 下一篇: 无法获取到图片的宽高