using BO.BO; using BO.Utils; using BO.Utils.BillRpc; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace QualityAndOrder { public partial class QualityOrderForm : Form, IAfterLogin { #region IAfterLogin public string RoleName { get { return "验质员"; } } public Form Generate() { return this; } #endregion List> hogGradeList; List houseList; List sanctionList; List weightBills; private Thread tab1SyncThread; bool mainIsRun = false; readonly Color btnSelectForeColor = Color.FromArgb(255, 255, 255); readonly Color btnSelectBackColor = Color.FromArgb(66, 163, 218); Color btnUnSelectForeColor = SystemColors.ControlText; Color btnUnSelectBackColor = Color.FromArgb(225, 225, 225); public QualityOrderForm() { InitializeComponent(); this.FormClosing += delegate { if (tab1SyncThread != null && tab1SyncThread.IsAlive) { tab1SyncThread.Abort(); } }; testTimeInput.Date = tab2DateSelect.Date = DateTime.Today; syncBtn.Focus(); this.uTabControl1.Selected += (sender, e) => { this.Text = e.TabPage.Text; }; sanctionGrid.AutoGenerateColumns = false; weightBillGrid.AutoGenerateColumns = false; hogGradeList = BaseInfoRpcUtil.GetBaseInfoEntity("GetHogGradeList"); houseList = HouseSplitEntity.Init(BaseInfoRpcUtil.GetBaseInfoEntity("GetLiveColonyHouseList")); sanctionList = SanctionSplit3Part.Init(BaseInfoRpcUtil.GetSanctionList()); AddKeyPadForTab1(); AddHogGradeBtn(); BindSanctionGrid(); AddHouseBtn(); AddKeyPadForTab2(); numberBox.LostFocus += (sender, e) => { flag = 1; }; sanctionGrid.GotFocus += (sender, e) => { flag = 2; }; mainIsRun = true; } int flag = 0; private void BindWeightBillGrid() { weightBillGrid.DataSource = null; weightBillGrid.DataSource = weightBills.OrderBy(x => x.ID).OrderBy(x => x.AlreadyHouse).ToList(); foreach (DataGridViewRow row in weightBillGrid.Rows) { if ((bool)row.Cells["W_AlreadyHouse"].Value) row.DefaultCellStyle.BackColor = Color.YellowGreen; } weightBillGrid.Refresh(); } private void AddKeyPadForTab1() { for (var i = 1; i < 10; i++) { var btn = new Button() { Name = "_" + i, Text = i.ToString(), Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) }; btn.Click += (sender, e) => { if (flag == 1) { numberBox.Text += btn.Text; } else if (flag == 2) InputSanctionNumber(btn.Text); }; keyBoardPanel.Controls.Add(btn); } var zero = new Button() { Name = "_0", Text = "0", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) }; zero.Click += (sender, e) => { if (flag == 1) { if (!string.IsNullOrEmpty(numberBox.Text)) numberBox.Text += "0"; } else if (flag == 2) InputSanctionNumber("0"); }; keyBoardPanel.Controls.Add(zero); var back = new Button() { Name = "_back", Text = "←", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) }; back.Click += (sender, e) => { if (flag == 1) { if (!string.IsNullOrEmpty(numberBox.Text)) numberBox.Text = numberBox.Text.Substring(0, numberBox.Text.Length - 1); } else if (flag == 2) InputSanctionNumber("←"); }; keyBoardPanel.Controls.Add(back); var clear = new Button() { Name = "_clear", Text = "清空", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) }; clear.Click += (sender, e) => { if (flag == 1) { numberBox.Text = string.Empty; } else if (flag == 2) InputSanctionNumber("清空"); }; keyBoardPanel.Controls.Add(clear); } void InputSanctionNumber(string input) { if (sanctionGrid.CurrentCell == null) throw new Exception("请选择一项异常"); var tag = sanctionGrid.CurrentRow.DataBoundItem as SanctionSplit3Part; var idx = sanctionGrid.SelectedCells[0].ColumnIndex; if (idx > 3) { if (tag.Sanction_ID3 == 0) return; tag.Number3 = GetAfterNumber(tag.Number3, input); } else if (idx > 1) { if (tag.Sanction_ID2 == 0) return; tag.Number2 = GetAfterNumber(tag.Number2, input); } else { if (tag.Sanction_ID1 == 0) return; tag.Number1 = GetAfterNumber(tag.Number1, input); } sanctionGrid.Refresh(); } int? GetAfterNumber(int? oldValue, string input) { switch (input) { case "0": if (oldValue.HasValue) return int.Parse(oldValue + "0"); return null; case "←": if (oldValue.HasValue) { var s = oldValue.ToString(); s = s.Substring(0, s.Length - 1); if (string.IsNullOrEmpty(s)) return null; return int.Parse(s); } return null; case "清空": return null; default: var sn = ""; if (oldValue.HasValue) sn = oldValue.ToString(); sn += input; return int.Parse(sn); } } Button currentBtn; private void AddHogGradeBtn() { foreach (var item in hogGradeList) { var btn = new Button() { Name = "_" + item.Item1, Tag = item, Text = item.Item2, Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { Left = 20, Top = 5 }, Font = new Font("宋体", 15), BackColor = btnUnSelectBackColor }; btn.Click += (sender, e) => { if (currentBtn != null) { currentBtn.BackColor = btnUnSelectBackColor; currentBtn.ForeColor = btnUnSelectForeColor; } if (currentBtn != btn) { btn.BackColor = btnSelectBackColor; btn.ForeColor = btnSelectForeColor; currentBtn = btn; } else currentBtn = null; }; hogGradePanel.Controls.Add(btn); } } private void BindSanctionGrid() { sanctionGrid.DataSource = sanctionList; sanctionGrid.Refresh(); } List