using Bro.Common.Helper; using Bro.UI.Model.Winform; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Bro.M071.Process.UI { [MenuNode("M071_MainForm", "运行界面", 1, "M071Node", true)] public partial class M071_MainForm : MenuFrmBase { Canvas cvImage = new Canvas(); M071Config Config => Process?.IConfig as M071Config; public M071_MainForm() { InitializeComponent(); cvImage.IsShowElementList = false; tsmiShowStatusBar.Checked = cvImage.IsShowStatusBar = false; tsmiShowToolBar.Checked = cvImage.IsShowToolBar = false; cvImage.Dock = DockStyle.Fill; plImage.Controls.Add(cvImage); tscEditLocation.Visible = tsmiShowEditor.Checked = false; } public override void OnProcessUpdated() { base.OnProcessUpdated(); if (Config == null) return; if (string.IsNullOrWhiteSpace(Config.BackgroundImagePath)) return; try { Bitmap image = (Bitmap)Image.FromFile(Config.BackgroundImagePath); cvImage.LoadImage(image); } catch (Exception ex) { LogAsync(new LogMsg(DateTime.Now, "载入背景图异常", ex.Message)); return; } cvImage.Elements.Clear(); lvMeasures.Items.Clear(); Config.MeasurementUnitCollection.ForEach(u => { if (!u.IsEnabled) return; var ele = new KeyIndicator(u.Id, u.DisplayLocation); cvImage.Elements.Add(ele); ListViewItem item = new ListViewItem(u.GetDisplayText()); item.Tag = u.Id; lvMeasures.Items.Add(item); }); txtBarcode.ReadOnly = Config.IsBarcodeManulInputBlocked; (Process as M071Process).OnClearBarcode -= M071_MainForm_OnClearBarcode; (Process as M071Process).OnClearBarcode += M071_MainForm_OnClearBarcode; } #region 图片区右键菜单 private void tsmiShowToolBar_CheckedChanged(object sender, EventArgs e) { cvImage.IsShowToolBar = tsmiShowToolBar.Checked; } private void tsmiShowStatusBar_CheckedChanged(object sender, EventArgs e) { cvImage.IsShowStatusBar = tsmiShowStatusBar.Checked; } private void tsmiShowEditor_CheckedChanged(object sender, EventArgs e) { tscEditLocation.Visible = tsmiShowEditor.Checked; tscEditLocation.BringToFront(); } #endregion #region 标签编辑区 private void lvMeasures_SelectedIndexChanged(object sender, EventArgs e) { if (lvMeasures.SelectedItems.Count <= 0) return; var ele = cvImage.Elements.FirstOrDefault(u => u.ID == lvMeasures.SelectedItems[0].Tag.ToString()); propGridKeyIndicator.SelectedObject = ele; } private void btnCancelEdit_Click(object sender, EventArgs e) { cvImage.Elements.Clear(); lvMeasures.Items.Clear(); Config.MeasurementUnitCollection.ForEach(u => { if (!u.IsEnabled) return; var ele = new KeyIndicator(u.Id, u.DisplayLocation); cvImage.Elements.Add(ele); ListViewItem item = new ListViewItem(u.GetDisplayText()); item.Tag = u.Id; lvMeasures.Items.Add(item); }); MessageBox.Show("取消标签修改"); } private void btnConfirmEdit_Click(object sender, EventArgs e) { cvImage.Elements.ToList().ForEach(ele => { var measure = Config.MeasurementUnitCollection.FirstOrDefault(u => u.Id == ele.ID); if (measure != null) { measure.DisplayLocation = (ele as KeyIndicator).DisplayRect; } }); MessageBox.Show("标签修改完成"); } #endregion #region 上方状态区 #region 条码 string _barcode = ""; private void M071_MainForm_KeyUp(object sender, KeyEventArgs e) { string keyStr = e.KeyCode.ToString(); if (keyStr.Length == 1) { _barcode += keyStr.ToUpper(); } if (e.KeyValue == 13) { txtBarcode.Text = _barcode; _barcode = ""; } } private void txtBarcode_TextChanged(object sender, EventArgs e) { (Process as M071Process).BarCode = txtBarcode.Text.Trim(); } private void M071_MainForm_OnClearBarcode() { txtBarcode.BeginInvoke(new Action(() => txtBarcode.Clear())); } #endregion #endregion } }