Files
1257B_DB/JinYuan.ControlLib/CPK.cs
T

286 lines
10 KiB
C#
Raw Normal View History

2026-08-06 09:23:30 +08:00
using JinYuan.ControlLib.Models;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace JinYuan.ControlLib
{
public partial class CPK : UserControl
{
public CPK()
{
InitializeComponent();
IntValue();
}
#region 减少闪烁
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}
#endregion
private int subgroupSize = 5;
[Browsable(true)]
[Category("自定义属性")]
[Description("设置或获取子组大小值")]
public int SubgroupSize
{
get { return subgroupSize; }
set
{
subgroupSize = value;
listView1.Items[0].SubItems[3].Text = value.ToString();
this.Invalidate();
}
}
private double _uSLs = 0;
[Browsable(true)]
[Category("自定义属性")]
[Description("设置或获取上规格值")]
public double USLs
{
get { return _uSLs; }
set
{
_uSLs = value;
listView1.Items[2].SubItems[1].Text = value.ToString();
this.Invalidate();
}
}
private double _lSLs = 0;
[Browsable(true)]
[Category("自定义属性")]
[Description("设置或获取下规格值")]
public double LSLs
{
get { return _lSLs; }
set
{
_lSLs = value;
listView1.Items[2].SubItems[5].Text = value.ToString();
this.Invalidate();
}
}
private double _cpkPpkAcceptanceValue = 0;
[Browsable(true)]
[Category("自定义属性")]
[Description("设置或获取目标值")]
public double CpkPpkAcceptanceValue
{
get { return _cpkPpkAcceptanceValue; }
set
{
_cpkPpkAcceptanceValue = value;
listView1.Items[2].SubItems[3].Text = value.ToString();
this.Invalidate();
}
}
private CPKModel _cPKData = new CPKModel();
[Browsable(true)]
[Category("自定义属性")]
[Description("获取目标值")]
public CPKModel CPKData
{
get { return _cPKData; }
set
{
if (value != null)
{
_cPKData = value;
//总样本数
listView1.Items[0].SubItems[1].Text = _cPKData.TotalNumber.ToString();
//平均值
listView1.Items[1].SubItems[1].Text = _cPKData.MeanVlaue.ToString();
//最大值
listView1.Items[1].SubItems[3].Text = _cPKData.MaxValue.ToString();
//最小值
listView1.Items[1].SubItems[5].Text = _cPKData.MinValue.ToString();
// 正的3倍标准差线
listView1.Items[3].SubItems[1].Text = _cPKData.Pos3Sigma.ToString();
// 负的3倍标准差线
listView1.Items[3].SubItems[3].Text = _cPKData.Neg3Sigma.ToString();
// 组内标准差值
listView2.Items[0].SubItems[1].Text = _cPKData.GroupSTDEV.ToString();
// 整体标准差值
listView2.Items[0].SubItems[2].Text = _cPKData.WholeSTDEV.ToString();
// 组内CPK值
listView2.Items[1].SubItems[1].Text = _cPKData.GroupCPK.ToString();
// 整体CPK值
listView2.Items[1].SubItems[2].Text = _cPKData.WholeCPK.ToString();
// 组内CP值
listView2.Items[2].SubItems[1].Text = _cPKData.GroupCP.ToString();
// 整体CP值
listView2.Items[2].SubItems[2].Text = _cPKData.WholeCP.ToString();
// 组内CPL值
listView2.Items[3].SubItems[1].Text = _cPKData.GroupCPL.ToString();
// 整体CPL值
listView2.Items[3].SubItems[2].Text = _cPKData.WholeCPL.ToString();
// 组内CPU值
listView2.Items[4].SubItems[1].Text = _cPKData.GroupCPU.ToString();
// 整体CPU值
listView2.Items[4].SubItems[2].Text = _cPKData.WholeCPU.ToString();
// 组内PPM<LSL值
listView2.Items[5].SubItems[1].Text = _cPKData.GroupPPM_LSL.ToString();
// 整体PPM<LSL值
listView2.Items[5].SubItems[2].Text = _cPKData.WholePPM_LSL.ToString();
// 组内PPM>USL值
listView2.Items[6].SubItems[1].Text = _cPKData.GroupPPM_USL.ToString();
// 整体PPM>USL值
listView2.Items[6].SubItems[2].Text = _cPKData.WholePPM_USL.ToString();
// 组内PPM Total值
listView2.Items[7].SubItems[1].Text = _cPKData.GroupPPM_Total.ToString();
// 整体PPMN Total值
listView2.Items[7].SubItems[2].Text = _cPKData.WholePPM_Total.ToString();
lbl_Ca.Text = _cPKData.CA.ToString();
this.Invalidate();
}
}
}
#region 初始化
private void IntValue()
{
//listView2.OwnerDraw = true;
//listView2.DrawColumnHeader += ListView2_DrawColumnHeader;
listView1.Columns.Clear();
listView2.Columns.Clear();
// 假设ListView控件的名称为listView1
// 添加列头
listView1.Columns.Add("项目1", 80);
listView1.Columns.Add("数值1", 90);
listView1.Columns.Add("项目2", 80);
listView1.Columns.Add("数值2", 90);
listView1.Columns.Add("项目3", 80);
listView1.Columns.Add("数值3", 95);
// 创建一个ListViewItem对象,并将数据添加到指定单元格 0
ListViewItem item1_1 = new ListViewItem("总样本数");
item1_1.SubItems.Add("0");
item1_1.SubItems.Add("子组大小");
item1_1.SubItems.Add("0");
item1_1.SubItems.Add("图标类型");
item1_1.SubItems.Add("XR");
listView1.Items.Add(item1_1); // 添加完整的ListViewItem对象到ListView控件中的指定行索引
// 如果需要添加多行数据,可以类似地重复上述步骤
ListViewItem item1_2 = new ListViewItem("平均值"); //1
item1_2.SubItems.Add("0");
item1_2.SubItems.Add("最大值");
item1_2.SubItems.Add("0");
item1_2.SubItems.Add("最小值");
item1_2.SubItems.Add("0");
listView1.Items.Add(item1_2);
ListViewItem item1_3 = new ListViewItem("上规格"); //2
item1_3.SubItems.Add("0");
item1_3.SubItems.Add("目标值");
item1_3.SubItems.Add("0");
item1_3.SubItems.Add("下规格");
item1_3.SubItems.Add("0");
listView1.Items.Add(item1_3);
ListViewItem item1_4 = new ListViewItem("+3Sigma"); //3
item1_4.SubItems.Add("0");
item1_4.SubItems.Add("-3Sigma");
item1_4.SubItems.Add("0");
listView1.Items.Add(item1_4);
// 假设ListView控件的名称为listView1
// 添加列头
listView2.Columns.Add("", 150);
listView2.Columns.Add("组内", 120);
listView2.Columns.Add("整体", 120);
listView2.Columns.Add("实测", 128);
// 创建一个ListViewItem对象,并将数据添加到指定单元格
ListViewItem item2_1 = new ListViewItem("STDEV"); //0
item2_1.SubItems.Add("0");
item2_1.SubItems.Add("0");
item2_1.SubItems.Add("");
listView2.Items.Add(item2_1); // 添加完整的ListViewItem对象到ListView控件中的指定行索引
ListViewItem item2_2 = new ListViewItem("CPK"); //1
item2_2.SubItems.Add("0");
item2_2.SubItems.Add("0");
item2_2.SubItems.Add("");
listView2.Items.Add(item2_2);
ListViewItem item2_3 = new ListViewItem("CP");//2
item2_3.SubItems.Add("0");
item2_3.SubItems.Add("0");
item2_3.SubItems.Add("");
listView2.Items.Add(item2_3);
ListViewItem item2_4 = new ListViewItem("CPL");//3
item2_4.SubItems.Add("0");
item2_4.SubItems.Add("0");
item2_4.SubItems.Add("");
listView2.Items.Add(item2_4);
ListViewItem item2_5 = new ListViewItem("CPU");//4
item2_5.SubItems.Add("0");
item2_5.SubItems.Add("0");
item2_5.SubItems.Add("");
listView2.Items.Add(item2_5);
ListViewItem item2_6 = new ListViewItem("PPM<LSL");//5
item2_6.SubItems.Add("0");
item2_6.SubItems.Add("0");
item2_6.SubItems.Add("0");
listView2.Items.Add(item2_6);
ListViewItem item2_7 = new ListViewItem("PPM>USL");//6
item2_7.SubItems.Add("0");
item2_7.SubItems.Add("0");
item2_7.SubItems.Add("0");
listView2.Items.Add(item2_7);
ListViewItem item2_8 = new ListViewItem("PPM Total");//7
item2_8.SubItems.Add("0");
item2_8.SubItems.Add("0");
item2_8.SubItems.Add("0");
listView2.Items.Add(item2_8);
lbl_Ca.Text = "0";
}
#endregion
public void ListView2_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawBackground();
// 设置自定义的列标题栏背景颜色
e.Graphics.FillRectangle(Brushes.AliceBlue, e.Bounds);
// 绘制列标题栏的文本
e.DrawText();
}
}
}