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 ButcherFactory.WeightCount_
|
|
{
|
|
public partial class DiscontWeightSetDialog : Form
|
|
{
|
|
BindingList<DiscontSetting> list;
|
|
|
|
public DiscontWeightSetDialog()
|
|
{
|
|
InitializeComponent();
|
|
|
|
this.Load += DiscontWeightSetDialog_Load;
|
|
}
|
|
|
|
void DiscontWeightSetDialog_Load(object sender, EventArgs e)
|
|
{
|
|
list = DiscontSetting.Load();
|
|
mGrid.DataSource = list;
|
|
mGrid.Refresh();
|
|
BindTotalLbl();
|
|
}
|
|
|
|
private void addBtn_Click(object sender, EventArgs e)
|
|
{
|
|
var name = nameBox.Text.Trim();
|
|
if (string.IsNullOrEmpty(name))
|
|
throw new Exception("请输入扣重项");
|
|
if (list.Any(x => x.Name == name))
|
|
throw new Exception("名称已存在");
|
|
decimal discont;
|
|
if (!decimal.TryParse(discontBox.Text.Trim(), out discont))
|
|
throw new Exception("标准重输入不正确");
|
|
if (discont == 0)
|
|
throw new Exception("标准值不能为0");
|
|
|
|
|
|
list.Insert(0, new DiscontSetting { Name = name, Standard = discont, Number = 0 });
|
|
mGrid.Refresh();
|
|
}
|
|
|
|
private void okBtn_Click(object sender, EventArgs e)
|
|
{
|
|
DiscontSetting.Save(list);
|
|
DialogResult = DialogResult.OK;
|
|
}
|
|
|
|
SolidBrush btnBrush = new SolidBrush(Color.LightBlue);
|
|
|
|
private void mGrid_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
|
|
{
|
|
if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
|
|
{
|
|
if (this.mGrid.Columns[e.ColumnIndex].HeaderText == "数量")
|
|
{
|
|
StringFormat sf = StringFormat.GenericDefault.Clone() as StringFormat;//设置重绘入单元格的字体样式
|
|
sf.FormatFlags = StringFormatFlags.DisplayFormatControl;
|
|
sf.Alignment = StringAlignment.Center;
|
|
sf.LineAlignment = StringAlignment.Center;
|
|
sf.Trimming = StringTrimming.EllipsisCharacter;
|
|
|
|
e.PaintBackground(e.CellBounds, false);//重绘边框
|
|
var entity = this.mGrid.Rows[e.RowIndex].DataBoundItem as DiscontSetting;
|
|
//设置要写入字体的大小
|
|
System.Drawing.Font myFont = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
|
SizeF sizeDel = e.Graphics.MeasureString("-", myFont);
|
|
SizeF sizeMod = e.Graphics.MeasureString(entity.Number.ToString(), myFont);
|
|
SizeF sizeLook = e.Graphics.MeasureString("+", myFont);
|
|
|
|
float fDel = sizeDel.Width / (sizeDel.Width + sizeMod.Width + sizeLook.Width); //
|
|
float fMod = sizeMod.Width / (sizeDel.Width + sizeMod.Width + sizeLook.Width);
|
|
float fLook = sizeLook.Width / (sizeDel.Width + sizeMod.Width + sizeLook.Width);
|
|
|
|
//设置每个“按钮的边界”
|
|
RectangleF rectDel = new RectangleF(e.CellBounds.Left, e.CellBounds.Top, e.CellBounds.Width * fDel, e.CellBounds.Height);
|
|
RectangleF rectMod = new RectangleF(rectDel.Right, e.CellBounds.Top, e.CellBounds.Width * fMod, e.CellBounds.Height);
|
|
RectangleF rectLook = new RectangleF(rectMod.Right, e.CellBounds.Top, e.CellBounds.Width * fLook, e.CellBounds.Height);
|
|
e.Graphics.FillRectangles(btnBrush, new RectangleF[] { rectDel });
|
|
e.Graphics.DrawString("-", myFont, Brushes.Black, rectDel, sf); //绘制“按钮”
|
|
e.Graphics.DrawString(entity.Number.ToString(), myFont, Brushes.Black, rectMod, sf);
|
|
e.Graphics.FillRectangles(btnBrush, new RectangleF[] { rectLook });
|
|
e.Graphics.DrawString("+", myFont, Brushes.Black, rectLook, sf);
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void mGrid_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
|
|
{
|
|
if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
|
|
{
|
|
if (this.mGrid.Columns[e.ColumnIndex].HeaderText == "删除")
|
|
{
|
|
var itemName = mGrid.CurrentRow.Cells[1].Value.ToString();
|
|
var tag = list.First(x => x.Name == itemName);
|
|
list.Remove(tag);
|
|
mGrid.Refresh();
|
|
BindTotalLbl();
|
|
return;
|
|
}
|
|
Point curPosition = e.Location;//当前鼠标在当前单元格中的坐标
|
|
if (this.mGrid.Columns[e.ColumnIndex].HeaderText == "数量")
|
|
{
|
|
Graphics g = this.mGrid.CreateGraphics();
|
|
System.Drawing.Font myFont = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
|
|
|
var entity = this.mGrid.Rows[e.RowIndex].DataBoundItem as DiscontSetting;
|
|
|
|
SizeF sizeDel = g.MeasureString("-", myFont);
|
|
SizeF sizeMod = g.MeasureString(entity.Number.ToString(), myFont);
|
|
SizeF sizeLook = g.MeasureString("+", myFont);
|
|
float fDel = sizeDel.Width / (sizeDel.Width + sizeMod.Width + sizeLook.Width);
|
|
float fMod = sizeMod.Width / (sizeDel.Width + sizeMod.Width + sizeLook.Width);
|
|
float fLook = sizeLook.Width / (sizeDel.Width + sizeMod.Width + sizeLook.Width);
|
|
|
|
Rectangle rectTotal = new Rectangle(0, 0, this.mGrid.Columns[e.ColumnIndex].Width, this.mGrid.Rows[e.RowIndex].Height);
|
|
RectangleF rectDel = new RectangleF(rectTotal.Left, rectTotal.Top, rectTotal.Width * fDel, rectTotal.Height);
|
|
RectangleF rectMod = new RectangleF(rectDel.Right, rectTotal.Top, rectTotal.Width * fMod, rectTotal.Height);
|
|
RectangleF rectLook = new RectangleF(rectMod.Right, rectTotal.Top, rectTotal.Width * fLook, rectTotal.Height);
|
|
|
|
//判断当前鼠标在哪个“按钮”范围内
|
|
if (rectDel.Contains(curPosition))//-
|
|
SubStract(entity);
|
|
else if (rectLook.Contains(curPosition))//+
|
|
Add(entity);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SubStract(DiscontSetting entity)
|
|
{
|
|
if (entity.Number == 0)
|
|
return;
|
|
entity.Number -= 1;
|
|
mGrid.Refresh();
|
|
BindTotalLbl();
|
|
}
|
|
|
|
private void Add(DiscontSetting entity)
|
|
{
|
|
entity.Number += 1;
|
|
mGrid.Refresh();
|
|
BindTotalLbl();
|
|
}
|
|
|
|
void BindTotalLbl()
|
|
{
|
|
totalLbl.Text = string.Format("{0:#0.##}", list.Sum(x => x.Weight));
|
|
}
|
|
}
|
|
}
|