banboshi_V1/halftoneproject-master/Code/FrmStepInfo.cs

300 lines
12 KiB
C#
Raw Permalink Normal View History

2023-10-31 13:19:29 +08:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ProductionControl
{
public partial class FrmStepInfo : Form
{
Service.StepService service = new Service.StepService();
Models.Step model=new Models.Step();
public FrmStepInfo(Models.Step m=null)
{
InitializeComponent();
dataGridView1.AutoGenerateColumns = false;
dataGridView2.AutoGenerateColumns = false;
//显示行号与列宽度自动调整
dataGridView2.RowHeadersVisible = true;
dataGridView2.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
dataGridView2.RowPostPaint += (sender, e) =>
{
Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView2, sender, e);
};
if (m == null)
model.ProcessList = new List<Models.StepProcess>();
else
model = m;
}
private void initDataView()
{
dataGridView1.Columns.Add("colCode", "code");
dataGridView1.Columns.Add("colName", "工序");
dataGridView1.Columns[0].Visible = false;
dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
foreach (var item in Config.dicDevType)
dataGridView1.Rows.Add(item.Key, item.Value);
//
this.txtCode.Text = model.Code;
this.txtName.Text = model.Name;
this.numStartTimeIndex.Value = model.StartTimeIndex;
if (model.ProcessList!=null)
dataGridView2.DataSource = new BindingSource(model.ProcessList, null);
}
private class Process
{
public Process(string code, string name)
{
Code = code;
Name = name;
}
public string Code { get; set; }
public string Name { get; set; }
}
private void FrmStepInfo_Load(object sender, EventArgs e)
{
initDataView();
}
#region private
private void reOrderProcess()
{
for (int i = 0; i < model.ProcessList.Count; i++)
model.ProcessList[i].Order = i;
}
private void refreshDataGridView()
{
dataGridView2.DataSource = null;
dataGridView2.DataSource = new BindingSource(model.ProcessList, null);
}
#endregion
private bool saveExit=false;
private void tsbtnSave_Click(object sender, EventArgs e)
{
try
{
string szCode = this.txtCode.Text.Trim();
string szName = this.txtName.Text.Trim();
if (szCode == "" || szName == "")
throw new Exception("请填写编号和名称!");
if (model.ProcessList == null || model.ProcessList.Count == 0)
throw new Exception("请添加流程工序!");
foreach(var item in model.ProcessList)
{
if (string.IsNullOrWhiteSpace(item.ProcessParams))
throw new Exception($"{Config.dicDevType[item.ProcessCode]} 配方未设置!");
}
model.Code = szCode;
model.Name = szName;
model.StartTimeIndex = (int)numStartTimeIndex.Value;
model.ModifyUserCode = Config.loginUser.Code;
bool result;
if (model.Id == 0)
{
model.CreateUserCode=Config.loginUser.Code;
result = service.InsertNav(model);
}
else
result = service.UpdateNav(model);
if (!result)
throw new Exception("保存失败!");
MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
saveExit=true;
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
if (this.dataGridView1.SelectedRows.Count != 1)
throw new Exception("请选择要插入的工序!");
string processCode = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
model.ProcessList.Add(new Models.StepProcess()
{
ProcessCode = processCode,
ProcessName= Config.dicDevType[processCode],
ModifyUserCode = Config.loginUser.Code,
CreateUserCode = Config.loginUser.Code
});
reOrderProcess();
this.refreshDataGridView();
this.dataGridView2.Rows[this.dataGridView2.Rows.Count-1].Selected = true;
dataGridView2.CurrentCell = dataGridView2.Rows[this.dataGridView2.Rows.Count - 1].Cells[1];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnInsert_Click(object sender, EventArgs e)
{
try
{
if (this.dataGridView1.SelectedRows.Count != 1)
throw new Exception("请选择要插入的工序!");
string processCode= this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
int liInsertIndex = this.dataGridView2.Rows.Count;
if (this.dataGridView2.SelectedRows.Count > 0)
liInsertIndex = this.dataGridView2.SelectedRows[0].Index;
model.ProcessList.Insert(liInsertIndex, new Models.StepProcess()
{
ProcessCode = processCode,
ProcessName = Config.dicDevType[processCode],
Order = liInsertIndex,
ModifyUserCode=Config.loginUser.Code,
CreateUserCode=Config.loginUser.Code
});
reOrderProcess();
this.refreshDataGridView();
this.dataGridView2.Rows[liInsertIndex].Selected = true;
dataGridView2.CurrentCell = dataGridView2.Rows[liInsertIndex].Cells[1];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnDel_Click(object sender, EventArgs e)
{
try
{
if (this.dataGridView2.SelectedRows.Count != 1)
throw new Exception("请选择要删除的工序!");
int liRowIndex = this.dataGridView2.SelectedRows[0].Index;
model.ProcessList.RemoveAt(liRowIndex);
if(liRowIndex>= dataGridView2.Rows.Count-1)
liRowIndex= dataGridView2.Rows.Count-1;
dataGridView2.CurrentCell = dataGridView2.Rows[liRowIndex].Cells[1];
//reOrderProcess();
this.refreshDataGridView();
if (dataGridView2.Rows.Count < 1)
return;
if (liRowIndex >= dataGridView2.Rows.Count)
liRowIndex = dataGridView2.Rows.Count - 1;
dataGridView2.CurrentCell = dataGridView2.Rows[liRowIndex].Cells[1];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnUp_Click(object sender, EventArgs e)
{
try
{
if (this.dataGridView2.SelectedRows.Count != 1)
throw new Exception("请选择要调整顺序的工序!");
int liSelIndex = this.dataGridView2.SelectedRows[0].Index;
if (liSelIndex == 0)
return;
model.ProcessList.Insert(liSelIndex - 1, model.ProcessList[liSelIndex]);
model.ProcessList.RemoveAt(liSelIndex + 1);
reOrderProcess();
this.refreshDataGridView();
this.dataGridView2.Rows[liSelIndex-1].Selected = true;
dataGridView2.CurrentCell = dataGridView2.Rows[liSelIndex - 1].Cells[1];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnDown_Click(object sender, EventArgs e)
{
try
{
if (this.dataGridView2.SelectedRows.Count != 1)
throw new Exception("请选择要调整顺序的工序!");
int liSelIndex = this.dataGridView2.SelectedRows[0].Index;
if (liSelIndex == this.dataGridView2.Rows.Count-1)
return;
model.ProcessList.Insert(liSelIndex +2, model.ProcessList[liSelIndex]);
model.ProcessList.RemoveAt(liSelIndex);
reOrderProcess();
this.refreshDataGridView();
this.dataGridView2.Rows[liSelIndex+1].Selected = true;
dataGridView2.CurrentCell = dataGridView2.Rows[liSelIndex + 1].Cells[1];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void tsbtnDebug_Click(object sender, EventArgs e)
{
}
private void dataGridView2_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
for(int i=0;i< dataGridView2.Rows.Count;i++)
{
dataGridView2.Rows[i].Cells["colTypeName"].Value = Config.dicDevType[dataGridView2.Rows[i].Cells[0].Value.ToString()];
}
}
private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
int Index = this.dataGridView2.CurrentRow.Index;//获取当前选中行的索引
if (Index < this.dataGridView2.Rows.Count && this.dataGridView2.CurrentCell.Value.ToString() == "设置")
{
string processCode = this.dataGridView2.Rows[Index].Cells["colProcessCode"].Value.ToString();
string processParams="";
if(this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value!=null)
processParams=this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value.ToString();
FrmSetParams frm=new FrmSetParams(processCode, processParams);
if (frm.ShowDialog() == DialogResult.OK)
this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = frm.ParamsData;
}
}
private void tsbtnClose_Click(object sender, EventArgs e)
{
this.Close();
}
//单元格编译完成
private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
var value = dataGridView2.Rows[e.RowIndex].Cells["colProcessName"].Value;
if (value==null || value.ToString().Trim() == "")
{
dataGridView2.Rows[e.RowIndex].Cells["colProcessName"].Value = dataGridView2.Rows[e.RowIndex].Cells["colTypeName"].Value;
}
}
private void FrmStepInfo_FormClosing(object sender, FormClosingEventArgs e)
{
if (!saveExit && MessageBox.Show($"确认修改已保存,是否退出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
{
e.Cancel = true;
return;
}
}
}
}