在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → WinForm,C#扫描枪 示例源码

WinForm,C#扫描枪 示例源码

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.50M
  • 下载次数:254
  • 浏览次数:3510
  • 发布时间:2017-09-29
  • 实例类别:C#语言基础
  • 发 布 人:zyfhyc
  • 文件格式:.rar
  • 所需积分:10
 相关标签: winform 扫描 C# 扫描枪

实例介绍

【实例简介】(WinForm,C#扫描枪

【实例截图】

from clipboard

【核心代码】


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Configuration;
namespace Scan_Pro.View
{
    /// <summary>
    /// 桶的扫描操作类
    /// </summary>
    public partial class frmScanOpterate : Form
    {
        public frmScanOpterate()
        {
            InitializeComponent();
		}

		#region 窗体属性加载

		private void frmScanOpterate_Load(object sender, EventArgs e)
		{
			
			
			if (!System.IO.File.Exists(Scan_Pro.Opteration.ScanOpterate.mStrFileName)) 
			{
				frmInit frmIn = new Scan_Pro.frmInit();
				frmIn.Text = "初始化桶";
				frmIn.ShowDialog();
			}
				
			//默认设置桶(最大容量和最大数目)

			Scan_Pro.Opteration.ScanOpterate.LoadSetDefaultBoxCoutMaxAndBoxCapactity();

			//刷新桶中的数据

			//Scan_Pro.Opteration.ScanOpterate.LoadNum(listView);//利用ListView实现
			//Scan_Pro.Opteration.ScanOpterate.LoadNumber(dataGridView);//方法1
			Scan_Pro.Opteration.ScanOpterate.InitBoxToDataGridView(dataGridView);
			Scan_Pro.Opteration.ScanOpterate.LoadAllBarCode(dataGridView);//方法2(最优化的方法)
		}

		#endregion

		#region 取消

		private void btnCancel_Click(object sender, EventArgs e)
        {
			Application.Exit();
		}

		#endregion

		#region 确定

		private void btnStartScan_Click(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;			

			if (txtPageNum.Text.Trim() == "")
			{
				Scan_Pro.View.ZMessageBox.Show("", "条码不能为空!", 2);
				Cursor = Cursors.Default;
                return;
			}


			int BoxNum;
			string pStr = GetstrTrim(txtPageNum.Text.Trim());
			int Stat = Scan_Pro.Opteration.ScanOpterate.ScanStat(pStr, out BoxNum);
			if(Stat==1)//扫描到条码
			{
				DialogResult drIs=ZMessageBox.Show(BoxNum.ToString(),1);
				if (drIs.ToString() == "OK")
				{
					Scan_Pro.Opteration.ScanOpterate.setScanNumOk(pStr);
					txtPageNum.Clear();
				}
			}
			else if(Stat==3)//没有扫描到,桶中有空位
			{
				DialogResult dr1 =ZMessageBox.Show(BoxNum.ToString(),2);

				if (dr1.ToString() == "OK")//追加该号码到容积中
				{
					Scan_Pro.Opteration.ScanOpterate.AddPageNum(pStr);
					txtPageNum.Clear();
				}
			}
			else if (Stat == 2)//没有扫描到,桶中没有空位
			{
				DialogResult dr = Scan_Pro.View.ZMessageBox.Show("", "桶已经装满(按F11键扩容)", 2);
				if (dr.ToString() == "OK")
				{
					frmInit frmIn = new frmInit();
					frmIn.ShowDialog();
					Scan_Pro.Opteration.ScanOpterate.InitBoxToDataGridView(dataGridView);
					Scan_Pro.Opteration.ScanOpterate.AddPageNum(pStr);
					txtPageNum.Clear();
				}
			}
			else
			{
				DialogResult dr = Scan_Pro.View.ZMessageBox.Show("", "请追加桶!", 2);
				if (dr.ToString() == "OK")
				{
					frmInit frmIn = new frmInit();
					frmIn.Text = "追加桶";
					frmIn.ShowDialog();
					Scan_Pro.Opteration.ScanOpterate.InitBoxToDataGridView(dataGridView);
					Scan_Pro.Opteration.ScanOpterate.AddPageNum(pStr);
					txtPageNum.Clear();
				}
			}
			txtPageNum.SelectAll();
            Cursor = Cursors.Default;
			//Scan_Pro.Opteration.ScanOpterate.LoadNumber(dataGridView);//方法1
			Scan_Pro.Opteration.ScanOpterate.LoadAllBarCode(dataGridView);//方法2
		}

		#endregion

		#region 快捷键和输入字符限制实现

		private void frmScanOpterate_KeyDown(object sender, KeyEventArgs e)
		{
			if (e.KeyCode == Keys.Escape)
			{
				DialogResult dr = Scan_Pro.View.ZMessageBox.Show("", "确认要退出码?", 2); ;
				if(dr.ToString()=="OK")
					Application.Exit();
			}
			else if (e.KeyCode == Keys.Enter)
				btnStartScan_Click(sender, new EventArgs());
			else if (e.KeyCode == Keys.F11)
			{
				Scan_Pro.frmInit frmInit = new Scan_Pro.frmInit();
				frmInit.Text = "扩容";
				frmInit.ShowDialog();
				Scan_Pro.Opteration.ScanOpterate.InitBoxToDataGridView(dataGridView);
				Scan_Pro.Opteration.ScanOpterate.LoadAllBarCode(dataGridView);
			}
			else if(e.Control)//删除选中的条码
			{
				if(e.KeyCode==Keys.Delete)
				{
					Scan_Pro.Opteration.ScanOpterate.DeleteNumSelected(dataGridView);
					Scan_Pro.Opteration.ScanOpterate.InitBoxToDataGridView(dataGridView);
					Scan_Pro.Opteration.ScanOpterate.LoadAllBarCode(dataGridView);//方法2(最优化的方法)
				}
			}
			else if (e.KeyCode == Keys.F2)//初始化桶
			{
				if (System.IO.File.Exists(Scan_Pro.Opteration.ScanOpterate.mStrFileName))
				{
					DialogResult dr = Scan_Pro.View.ZMessageBox.Show("清空", "所有条码吗?", 4);
					if (dr.ToString() == "OK")
					{
						if (System.IO.File.Exists(Scan_Pro.Opteration.ScanOpterate.mStrFileName))
						{
							Scan_Pro.Opteration.ScanOpterate.DeleteAllNodeNum();
							Scan_Pro.Opteration.ScanOpterate.InitBoxToDataGridView(dataGridView);
							Scan_Pro.Opteration.ScanOpterate.LoadAllBarCode(dataGridView);
						}
					}
					
				}
			}
			else if (e.KeyCode == Keys.F1)//帮助
			{
				Scan_Pro.View.frmHelp frmSh = new frmHelp();
				frmSh.ShowDialog();
			}
			else if (e.KeyCode == Keys.F5)
			{
				//Scan_Pro.Opteration.ScanOpterate.LoadAllBarCode(dataGridView);
			}
			else if (e.KeyCode == Keys.F7)//设置桶和容积的上限
			{
				frmInit frmIn = new frmInit("设置桶和容积的上限");
				frmIn.ShowDialog();
			}

			if (e.KeyCode == Keys.Back)
			{
				IsBackspace = true;
			}
			else 
			{
				IsBackspace = false;
			}

		}
		private bool nonNumberEntered = false;
		private void txtPageNum_KeyDown(object sender, KeyEventArgs e)
		{
			CheckInputChar(sender,e);
		}

		private void txtPageNum_KeyPress(object sender, KeyPressEventArgs e)
		{
			if(nonNumberEntered)
			{
				e.Handled = true;
			}
		}
		//只接受数字和字符(a---z)或者(A--Z)
		private bool CheckInputChar(object sender, KeyEventArgs e)
		{
			nonNumberEntered = false;

			// Determine whether the keystroke is a number from the top of the keyboard.
			if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
			{
				// Determine whether the keystroke is a number from the keypad.
				if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
				{
					// Determine whether the keystroke is a backspace.
					if (e.KeyCode != Keys.Back)
					{
						// A non-numerical keystroke was pressed.
						// Set the flag to true and evaluate in KeyPress event.
						nonNumberEntered = true;
					}
				}
			}
			if (e.KeyCode >=Keys.A && e.KeyCode <= Keys.Z)
			{
				nonNumberEntered = false;
			}
			return nonNumberEntered;
		}

		#endregion

		#region 格式化输入字符串

		//字符格式化(每5个字符加一个空格)
		private bool IsSuss = false;
		private bool IsBackspace = false;
		private void txtPageNum_TextChanged(object sender, EventArgs e)
		{
			if (txtPageNum.Text!= "")
			{
				string pStrInput = txtPageNum.Text;
				char []chBefore = pStrInput.ToCharArray();

				string pStrNew = "";
				foreach(char ch in chBefore)
				{
					if(ch!=' ')
						pStrNew =ch.ToString();
				}
				char[] chNow = pStrNew.ToCharArray();
				string pStrNow = "";
				for (int i = 0; i < chNow.Length; i  )
				{
					if (i % 5 == 0 && i >=5)
					{
						pStrNow  = " ";
					}
					pStrNow  = chNow[i].ToString();
					if (i == chNow.Length - 1) 
					{
						IsSuss = true;
					}
				}
				txtPageNum.Select(pStrNow.Length, pStrNow.Length);
				if (IsSuss && !IsBackspace) 
				{
					IsSuss = false;
					txtPageNum.Text = pStrNow;
					return;
				}
			}
			
		}

		#endregion

		private string GetstrTrim( string pStrInput) 
		{
			string pStrNew = "";
			foreach (char ch in pStrInput.ToCharArray())
			{
				if (ch != ' ')
					pStrNew  = ch.ToString();
			}
			return pStrNew;
		}

		private void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
		{
			if (e.ColumnIndex==-1 || e.RowIndex==-1) return;
			if (dataGridView.Rows.Count != 0)
			{
				if (e.ColumnIndex > 1)
				{
					if (e.Button == MouseButtons.Left)
					{
						dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected = true;
					}
				}
				else 
				{
					dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected = false;
				}
			}
		}
	}
}


实例下载地址

WinForm,C#扫描枪 示例源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警