using CaeGlobals; using CaeKnowledge; using CaeKnowledge.View; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; namespace CPSO.Forms._92_Knowledge { public partial class FrmEditProcessingJobs : Form { private Controller Self { get; } private bool _modified; // Constructors public FrmEditProcessingJobs(Controller self) { InitializeComponent(); Text = @"分析模型查看"; dgvCommands.DataBindingComplete += DataBindingComplete; Self = self; _modified = false; } private void tsmiClose_Click(object sender, EventArgs e) { Hide(); } private void dgvCommands_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { // Color blue = Color.FromArgb(225, 245, 255); Color green = Color.FromArgb(235, 255, 235); // Color yellow = Color.FromArgb(255, 255, 205); // Color red = Color.FromArgb(255, 235, 215); dgvCommands.Rows[e.RowIndex].DefaultCellStyle.BackColor = green; } private void btnClearAll_Click(object sender, EventArgs e) { dgvCommands.DataSource = null; _viewProcessingJobs.Clear(); SetBinding(); _modified = true; } private void btnOK_Click(object sender, EventArgs e) { try { DialogResult = DialogResult.OK; if (_modified && dgvCommands.DataSource is BindingSource source && source.DataSource is List list) { Self.ProcessingJobs.Clear(); Self.ProcessingJobs.AddRange(list); _modified = false; } Hide(); } catch (Exception ex) { ExceptionTools.Show(this, ex); } } private readonly List _viewProcessingJobs = new List(); // Methods public void PrepareForm() { _viewProcessingJobs.Clear(); if (Self.ProcessingJobs.Count > 0) { _viewProcessingJobs.AddRange(Self.ProcessingJobs); } SetBinding(); } private void SetBinding() { BindingSource binding = new BindingSource() { DataSource = _viewProcessingJobs }; dgvCommands.DataSource = binding; } // Source - https://stackoverflow.com/a/24784960 // Posted by TFischer private void DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { // Loops through each row in the DataGridView, and adds the // row number to the header foreach (DataGridViewRow dGVRow in dgvCommands.Rows) { dGVRow.HeaderCell.Value = $"{dGVRow.Index + 1}"; } // This resizes the width of the row headers to fit the numbers dgvCommands.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders); } private void FrmEditToolPositions_Load(object sender, EventArgs e) { dgvCommands.AllowUserToAddRows = false; dgvCommands.AllowUserToDeleteRows = false; dgvCommands.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; } private void tsmiOpen_Click(object sender, EventArgs e) { try { using (OpenFileDialog ofd = new OpenFileDialog()) { ofd.Filter = "计算任务列表 (*.wdb)|*.wdb|All Files (*.*)|*.*"; ofd.FilterIndex = 1; ofd.RestoreDirectory = true; if (ofd.ShowDialog() == DialogResult.OK) { // 1. 从数据读取 var list = KnowledgeTools.LoadDatabase(ofd.FileName); // 2. 保存到Controller Self.ProcessingJobs.Clear(); list.ForEach(x => { Self.ProcessingJobs.Add(new ViewProcessingJob(x)); }); // 3. 现实到dgv PrepareForm(); } } } catch (Exception ex) { ExceptionTools.Show(ex); } } private void tsmiSaveAs_Click(object sender, EventArgs e) { try { using (SaveFileDialog sfd = new SaveFileDialog()) { sfd.Filter = "计算任务列表 (*.wdb)|*.wdb|All Files (*.*)|*.*"; sfd.FilterIndex = 1; sfd.RestoreDirectory = true; if (sfd.ShowDialog() == DialogResult.OK) { var fullPath = sfd.FileName; var jobs = Self.ProcessingJobs.Select(x => x.Base).ToList(); // 保存到数据库 KnowledgeTools.SaveDatabase(fullPath, jobs); } } } catch (Exception ex) { ExceptionTools.Show(ex); } } } }