Files
13-PingZhi126KVGLKG-MesProject/PrintBarCode/PrintBarCodeForm.cs

215 lines
5.9 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PrintBarCode
{
public partial class PrintBarCodeForm : Form
{
public static string ConnectString_MES = ConfigurationManager.AppSettings["ConnectionString_MES"];
Hashtable hsSnIsPrinted = new Hashtable ();
bool IsSnIsPrintedOK=true;
public PrintBarCodeForm()
{
InitializeComponent();
dateTimePicker1.Value= DateTime.Now;
}
private void button_Print_Click(object sender, EventArgs e)
{
string partNo;
int partCount;
int beginNumber;
DateTime proDate;
partNo = comboBox_PartNNo.Text;
partCount =(int) numericUpDown_Count.Value;
beginNumber = (int)numericUpDown_BeginNumber.Value;
proDate = dateTimePicker1.Value;
if(listBox1.Items.Count<1)
{
MessageBox.Show("请先点击变速器序列号预览按钮");
return;
}
if(!IsSnIsPrintedOK)
{
MessageBox.Show("变速器序列号有重复打印的,请选择手动方式打印");
return;
}
PrintLogInset(partNo, partCount, beginNumber, proDate);
//InitLiatBox1();
PrintSnList();
}
private void PrintSnList()
{
foreach(var sn in listBox1.Items)
{
PrintSnToPrinter(sn.ToString());
}
}
private void PrintSnToPrinter(string sn)
{
string partNo;
int partCount;
int beginNumber;
DateTime proDate;
partNo = comboBox_PartNNo.Text;
partCount = (int)numericUpDown_Count.Value;
beginNumber = (int)numericUpDown_BeginNumber.Value;
proDate = dateTimePicker1.Value;
if (IsSnIsCanPrinted(sn.ToString()))
{
PrintBarCode(sn.ToString());
PrintSnInset(sn.ToString(), partNo, partCount, beginNumber, proDate);
}
else
{
if (MessageBox.Show("变速器序列号已经打印过", "变速器序列号已经打印过,是否重复打印", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
PrintBarCode(sn.ToString());
PrintSnUpdate(sn.ToString(), partNo, partCount, beginNumber, proDate);
}
}
}
private void PrintBarCode(string barCode) { }
private void InitLiatBox1()
{
string partNo;
int partCount;
int beginNumber;
DateTime proDate;
partNo = comboBox_PartNNo.Text;
partCount = (int)numericUpDown_Count.Value;
beginNumber = (int)numericUpDown_BeginNumber.Value;
proDate = dateTimePicker1.Value;
List<string> list = CreatePartList(partNo, partCount, beginNumber, proDate);
hsSnIsPrinted.Clear();
listBox1.Items.Clear();
foreach (var item in list)
{
listBox1.Items.Add(item);
if(!IsSnIsCanPrinted(item))
{
IsSnIsPrintedOK = false;
}
int count;
count = PrintSnIsPrinted(item);
hsSnIsPrinted.Add(item, count);
}
}
private bool IsSnIsCanPrinted(string sn)
{
int count;
count = PrintSnIsPrinted(sn);
if (count > 0)
{
IsSnIsPrintedOK = false;
return false;
}
return true;
}
private List<string> CreatePartList(string partNo, int partCount, int beginNumber, DateTime proDate)
{
List<string> list = new List<string>();
string proDateString;
string sn;
proDateString = proDate.ToString("ddMMyyyy");
for(int i = beginNumber;i< beginNumber+ partCount;i++)
{
sn = i.ToString("00000000");
list.Add(partNo + "*" + proDateString + "*" + sn);
}
return list;
}
private void button_PreView_Click(object sender, EventArgs e)
{
InitLiatBox1();
}
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground(); //先调用基类实现
if (e.Index < 0) //form load 的时候return
return;
int count = Convert.ToInt32( hsSnIsPrinted[listBox1.Items[e.Index].ToString()]);
if(count > 0 ) {
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(),
e.Font, Brushes.Red, e.Bounds);
}
else
{
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(),
e.Font, Brushes.Black, e.Bounds);
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//form load 的时候return
string item;
item = ((ListBox) sender).SelectedItem.ToString();
textBox_SN.Text = item;
}
private void button_M_SnOne_Click(object sender, EventArgs e)
{
string sn;
sn = textBox_SN.Text;
if(sn.Length > 10)
{
PrintSnToPrinter(sn);
}
else
{
MessageBox.Show("请选择打印条码变速器序列号");
}
}
}
}