using DevExpress.Utils; using DevExpress.XtraCharts; using DevExpress.XtraRichEdit.Layout; using DevExpress.XtraTreeList.Data; using NPOI.SS.Formula.Functions; using OTSCommon.DBOperate.Model; using OTSIncAReportApp; using OTSIncAReportApp._1_UI.Control_DEVCharts; using OTSIncAReportApp.DataOperation.DataAccess; using OTSIncAReportApp.OTSRstMgrFunction; using OTSIncAReportApp.OTSSampleReportInfo; using OTSIncAReportApp.SysMgrTools; using OTSIncAReportGraph.Class; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Windows.Forms; namespace OTSIncAReportGrids { /// /// 成分分布表 颗粒成份分布表 /// public partial class CompositionDistributionGrid : UserControl { #region 设置变量 //设置模拟数据表 public DataTable m_dt = new DataTable(); DataTable SelectParticlesListConvertToTable(List selectParticles) { DataTable dataTable = new DataTable(); return dataTable; } //国际化 Language lan; Hashtable table; //测量结果 ResultFile result = null; OTSIncAReportApp.OTSSampleReportInfo.ReportCondition source; OTSIncAReportApp.frmReportApp m_ReportApp; frmReportConditionChoose m_condition; //int gridheight = 0; List list_gridheight = new List(); List list_table_data = new List(); List list_table_size = new List(); List list_table_Point = new List(); List list_fileName = new List(); int DataNumber = 0;//当前数据; List list_ComboBox = new List(); List list_ChartControl = new List(); int gridwidth = 0; int GridPosition = 0; int chartposition = 0; int indexGraphicType = 0; string GraphicType = "柱状图"; #endregion #region 多数据源 /// /// 绑定datagridview数据 /// public void BindDataGridView(string path, int num, string filename) { List FLID = new List() { 0, 1, 2, 4, 6, 7, 8, 9 }; List NameList = new List() { table["partcletype0"].ToString(), table["partcletype1"].ToString(), table["partcletype2"].ToString(), table["partcletype4"].ToString(), table["partcletype6"].ToString(), table["partcletype7"].ToString(), table["partcletype8"].ToString(), table["partcletype9"].ToString() }; DataTable dt; OTSGridView gridView = new OTSGridView(); OTSIncAReportApp.DataOperation.DataAccess.ParticleData particledata = new OTSIncAReportApp.DataOperation.DataAccess.ParticleData(path); string str1 = table["str1"].ToString(); string str2 = table["str2"].ToString(); string str3 = table["str3"].ToString(); string str4 = table["str4"].ToString(); string str5 = table["str5"].ToString(); string str6 = table["str6"].ToString(); string str7 = table["str7"].ToString(); string str8 = table["str8"].ToString(); string str9 = table["str9"].ToString(); string str10 = table["str10"].ToString(); string str11 = table["str11"].ToString(); string str13 = table["str13"].ToString(); //创建Grid的列序号 gridView.Columns.Add("rowid", str1); //创建Grid的列颗粒名 gridView.Columns.Add("TypeName", str8); //创建Grid的列代表色 gridView.Columns.Add("TypeColor", str9); //创建Grid的列颗粒数 gridView.Columns.Add("con", str10); //创建Grid的列颗粒数 //gridView.Columns.Add("SmallParticle", str11); //创建Grid的列面积占比 gridView.Columns.Add("AreaRadio", str13); string con = m_ReportApp.m_conditionChoose.m_conditionData.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE).ToString(); string po = ""; switch (con) { case "DMAX": po = "DMAX"; //创建Grid的列平均直径 gridView.Columns.Add("av", str4); //创建Grid的列最大直径 gridView.Columns.Add("max", str7); break; case "DMIN": po = "DMIN"; //创建Grid的列平均直径 gridView.Columns.Add("av", str4); //创建Grid的列最大直径 gridView.Columns.Add("max", str7); break; case "ECD": po = "Area"; //创建Grid的列平均直径 gridView.Columns.Add("av", str3); //创建Grid的列最大直径 gridView.Columns.Add("max", str6); break; case "FERET": po = "DFERET"; //创建Grid的列平均直径 gridView.Columns.Add("av", str4); //创建Grid的列最大直径 gridView.Columns.Add("max", str7); break; } double totalArea = 0; int sel = m_ReportApp.m_conditionChoose.m_conditionData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE); gridView.MergeColumnNames.Add(filename); gridView.AddSpanHeader(1, gridView.Columns.Count - 1, filename); FieldData fielddata = new FieldData(path); double scanFieldSize = result.GetScanFieldSizeX(); double wide = result.GetImageWidth(); double high = result.GetImageHeight(); double pixelSize = scanFieldSize / wide; int filedCount = fielddata.GetFiledCount(); totalArea = high * pixelSize*wide* pixelSize * filedCount; dt = particledata.GetParticleListByIncA(po); for (int i = 0; i < dt.Rows.Count; i++) { if (Convert.ToInt32(dt.Rows[i]["TypeId"]) < 100) { continue; } int add_rowindex = gridView.Rows.Add(); gridView.Rows[add_rowindex].Cells[0].Value = add_rowindex + 1; for (int k = 1; k < gridView.ColumnCount; k++) { if (gridView.Columns[k].Name == "TypeColor" && dt.Rows[i]["TypeColor"].ToString() != "") { string color = dt.Rows[i]["TypeColor"].ToString(); if (!color.Contains("#")) { color = "#" + dt.Rows[i]["TypeColor"].ToString(); } gridView.Rows[add_rowindex].Cells[k].Style.BackColor = DrawFunction.colorHx16toRGB(color); } else if (gridView.Columns[k].Name.ToLower() == "av" || gridView.Columns[k].Name.ToLower() == "max") { if (con == "ECD") { double Area = Convert.ToDouble(dt.Rows[i][gridView.Columns[k].Name]); gridView.Rows[add_rowindex].Cells[k].Value = Math.Round(Math.Sqrt(Area / Math.PI)* 2,2); } else { gridView.Rows[add_rowindex].Cells[k].Value = Math.Round( Convert.ToDouble(dt.Rows[i][gridView.Columns[k].Name])* 2,2); } gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure; } else if (gridView.Columns[k].Name.ToLower() == "arearadio") { if (totalArea == 0) { gridView.Rows[add_rowindex].Cells[k].Value = 0; } else { gridView.Rows[add_rowindex].Cells[k].Value = Math.Round(Convert.ToDouble(dt.Rows[i]["Area"]) * 100 / totalArea, 3); } gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure; } else { gridView.Rows[add_rowindex].Cells[k].Value = dt.Rows[i][gridView.Columns[k].Name]; gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure; } } } for (int i = 0; i < dt.Rows.Count; i++) { if (Convert.ToInt32(dt.Rows[i]["TypeId"]) > 100) { continue; } int add_rowindex = gridView.Rows.Add(); int index = FLID.IndexOf(Convert.ToInt32(dt.Rows[i]["TypeId"])); if (index == -1) { index = 7; } string name = NameList[index]; gridView.Rows[add_rowindex].Cells[0].Value = add_rowindex + 1; for (int k = 1; k < gridView.ColumnCount; k++) { if (gridView.Columns[k].Name == "TypeColor" && dt.Rows[i]["TypeColor"].ToString() != "") { string color = "#000000"; gridView.Rows[add_rowindex].Cells[k].Style.BackColor = DrawFunction.colorHx16toRGB(color); } else if (gridView.Columns[k].Name.ToLower() == "av" || gridView.Columns[k].Name.ToLower() == "max") { if (con == "ECD") { double Area = Convert.ToDouble(dt.Rows[i][gridView.Columns[k].Name]); gridView.Rows[add_rowindex].Cells[k].Value = Math.Round(Math.Sqrt(Area / Math.PI) * 2, 2); } else { gridView.Rows[add_rowindex].Cells[k].Value = Math.Round(Convert.ToDouble(dt.Rows[i][gridView.Columns[k].Name]) * 2, 2); } gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure; } else if (gridView.Columns[k].Name.ToLower() == "arearadio") { if (totalArea == 0) { gridView.Rows[add_rowindex].Cells[k].Value = 0; } else { gridView.Rows[add_rowindex].Cells[k].Value = Math.Round(Convert.ToDouble(dt.Rows[i]["Area"]) * 100 / totalArea, 5); } gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure; } else { gridView.Rows[add_rowindex].Cells[k].Value = dt.Rows[i][gridView.Columns[k].Name]; gridView.Rows[add_rowindex].Cells[k].Style.BackColor = Color.Azure; } } } gridView.Name = "gridView" + num.ToString(); int a1 = gridView.Rows.Add(); gridView.Rows[a1].Cells[1].Value = "Sum"; for (int j = 0; j < gridView.Rows.Count - 2; j++) { if (gridView.Rows[a1].Cells[3].Value == null) gridView.Rows[a1].Cells[3].Value = 0; gridView.Rows[a1].Cells[3].Value = Convert.ToInt32(gridView.Rows[a1].Cells[3].Value) + Convert.ToInt32(gridView.Rows[j].Cells[3].Value); if(gridView.Rows[a1].Cells[4].Value == null) gridView.Rows[a1].Cells[4].Value = 0; gridView.Rows[a1].Cells[4].Value = Convert.ToDouble(gridView.Rows[a1].Cells[4].Value) + Convert.ToDouble(gridView.Rows[j].Cells[4].Value); } list_table_Point.Add(SetDataGridViewStyle(gridView)); panel1.Controls.Add(gridView); // Panel panel = new Panel(); //panel.Size = new Size(gridwidth, 27); ////panel.Dock = DockStyle.Top; //panel.Location=new Point(0, list_gridheight.Max()); // panel.BackColor = Color.WhiteSmoke; list_table_data.Add(dt); //Graphics(dt, filename, GraphicType, position); } private void Graphics(DataTable data,string filename,string comboBox1Text,int pos) { ChartControl chartControl1 = new ChartControl(); chartControl1.Series.Clear(); // 假设你已经有一个 ChartControl 实例,并且已经添加了一个饼图 Series Series series = new Series(filename, ViewType.Bar); for (int a = 0; a < data.Rows.Count; a++) { string name = data.Rows[a]["TypeName"].ToString(); double Cunt = Convert.ToDouble(data.Rows[a]["con"]); series.Points.Add(new SeriesPoint(name, Cunt)); } series.LabelsVisibility = DefaultBoolean.True; chartControl1.Series.Add(series); //图例的位置定义 chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.Top; chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.RightOutside; chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; chartControl1.Legend.Direction = LegendDirection.TopToBottom; //十字准线光标 chartControl1.CrosshairEnabled = DefaultBoolean.True; chartControl1.CrosshairOptions.ShowValueLine = true; chartControl1.CrosshairOptions.ShowArgumentLabels = true; DevFunctions.ChangeView2(chartControl1, comboBox1Text); chartControl1.Location = new Point(pos, list_gridheight.Max()); chartControl1.Size = new Size(GridPosition, GridPosition); // 获取图表的坐标系(通常为 XYDiagram) XYDiagram diagram = chartControl1.Diagram as XYDiagram; if (diagram != null) { // 设置横坐标(X轴)名称 diagram.AxisX.Title.Text = "种类"; diagram.AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; // 确保标题可见 // 设置纵坐标(Y轴)名称 diagram.AxisY.Title.Text = "数量"; diagram.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; // 确保标题可见 } panel1.Controls.Add(chartControl1); } /// /// 设置DataGridView样式 /// private Point SetDataGridViewStyle(OTSGridView gridView) { //用户不能调整标题的高度 gridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; //用户不能调整 行高 gridView.AllowUserToResizeRows = false; //改变行的高度; //gridView.RowTemplate.Height = 20; //点击选择整行 gridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //居中显示 System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; gridView.DefaultCellStyle = dataGridViewCellStyle1; gridView.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; //再次重覆禁用拖动表头高度,居然有效果了 gridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; //设置grid可以复制 gridView.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText; //设置每列的宽度 gridView.Columns[0].Width = 40;//第一列序号的宽度设置一下吧,要不太丑 gridView.Columns[1].Width = 200; //设置序号列不排序 gridView.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable; //设置序号列不可以设置宽度 gridView.Columns[0].Resizable = DataGridViewTriState.False; gridView.AllowUserToAddRows = false; gridView.AllowUserToDeleteRows = false; gridView.AllowUserToResizeRows = false; gridView.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight; gridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; gridView.ContextMenuStrip = this.contextMenuStrip1; gridView.BorderStyle = 0; //gridView.Dock = System.Windows.Forms.DockStyle.Fill; //gridView.Location = new System.Drawing.Point(0, 0); //gridView.Location = new System.Drawing.Point(0, gridheight); int gridheight = 0; //chartposition = gridwidth; int outpos = gridwidth; gridView.Location = new System.Drawing.Point(gridwidth, 0); gridView.Margin = new System.Windows.Forms.Padding(2); gridView.MergeColumnHeaderBackColor = System.Drawing.SystemColors.ButtonHighlight; //gridView.Name = "Gview_gz"; gridView.ReadOnly = true; gridView.RowHeadersVisible = false; gridView.RowHeadersWidth = 40; gridView.RowTemplate.Height = 30; //gridView.Size = new System.Drawing.Size(667, 520); gridView.Size = new System.Drawing.Size(gridView.ColumnCount * 100 + 60, gridView.RowCount * 30); //gridView.Size = new System.Drawing.Size(gridView.ColumnCount * 100 + 60, gridView.RowCount * 30 + 30); //gridheight = gridheight + gridView.RowCount * 30 + 80; gridheight = gridheight + gridView.RowCount * 30 + 5; gridwidth = gridwidth + gridView.ColumnCount * 100 + 60; chartposition = chartposition + gridView.ColumnCount * 100; GridPosition = gridView.ColumnCount * 100 +40; list_gridheight.Add(gridheight); gridView.TabIndex = 0; gridView.SortCompare += new System.Windows.Forms.DataGridViewSortCompareEventHandler(this.Gview_gz_SortCompare); gridView.Sorted += new System.EventHandler(this.Gview_gz_Sorted); //先设置一下头的高度,否则会太矮不好看 gridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing; gridView.ColumnHeadersHeight = 40; list_table_size.Add( new Point(gridView.ColumnCount * 100+40, gridView.RowCount * 30)); return new Point(outpos, gridheight); } #endregion #region 窗体加载及初始化 /// /// 成份分布表,构造函数 /// /// 传入,委托类对象 /// 传入,项目管理类对象 public CompositionDistributionGrid(OTSIncAReportApp.frmReportApp ReportApp) { m_ReportApp = ReportApp; result = m_ReportApp.m_rstDataMgr.ResultFilesList[m_ReportApp.m_rstDataMgr.GetWorkingResultId()]; source = m_ReportApp.m_conditionChoose.m_conditionData; m_condition= ReportApp.m_conditionChoose; InitializeComponent(); //国际化 lan = new Language(this); table = lan.GetNameTable(this.Name); } public void SetGraphicType(ReportCondition sourceGridData) { string stdId_TYPE = ""; int stdIdIndex = 0; //find the stdId condition var STDIdItm = sourceGridData.ConditionItemList.Find(s => s.iItemId == OTS_REPORT_PROP_GRID_ITEMS.GRAPHIC_TYPE); if (STDIdItm != null) { stdId_TYPE = STDIdItm.itemDisplayVal.ToString(); stdIdIndex = STDIdItm.comboDownList.IndexOf(stdId_TYPE); } indexGraphicType = stdIdIndex; GraphicType = stdId_TYPE; int high = 0; for (int i = 0; i < list_table_Point.Count; i++) { if (high < list_table_Point[i].Y) { high = list_table_Point[i].Y; } } for (int i = 0; i < list_table_data.Count; i++) { DataNumber = i; Graphics(list_table_data[i], list_fileName[i], stdId_TYPE, list_table_size[i], list_table_Point[i], high); } } /// /// chart图创建 /// /// /// private void Graphics(DataTable data, string filename, string comboBox1Text, Point a_size, Point a_Location, int location_hig) { ChartControl chartControl1 = new ChartControl(); chartControl1.Series.Clear(); // 假设你已经有一个 ChartControl 实例,并且已经添加了一个饼图 Series Series series = new Series(filename, ViewType.Bar); for (int a = 0; a < data.Rows.Count; a++) { string name = data.Rows[a]["TypeName"].ToString(); double Cunt = Convert.ToDouble(data.Rows[a]["con"]); series.Points.Add(new SeriesPoint(name, Cunt)); } series.LabelsVisibility = DefaultBoolean.True; chartControl1.Series.Add(series); //图例的位置定义 chartControl1.Legend.AlignmentVertical = LegendAlignmentVertical.Top; chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.RightOutside; chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; chartControl1.Legend.Direction = LegendDirection.TopToBottom; //十字准线光标 chartControl1.CrosshairEnabled = DefaultBoolean.True; chartControl1.CrosshairOptions.ShowValueLine = true; chartControl1.CrosshairOptions.ShowArgumentLabels = true; DevFunctions.ChangeView2(chartControl1, comboBox1Text); chartControl1.Location = new Point(a_Location.X, location_hig+20); chartControl1.Size = new Size(a_size.X, a_size.Y); // 获取图表的坐标系(通常为 XYDiagram) XYDiagram diagram = chartControl1.Diagram as XYDiagram; if (diagram != null) { // 设置横坐标(X轴)名称 diagram.AxisX.Title.Text = "种类"; diagram.AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; // 确保标题可见 // 设置纵坐标(Y轴)名称 diagram.AxisY.Title.Text = "数量"; diagram.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; // 确保标题可见 } ComboBox comboBox = new ComboBox(); list_ChartControl.Add(chartControl1); list_ComboBox.Add(comboBox); list_ComboBox[list_ComboBox.Count - 1].Items.Add("柱状图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("折线图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("饼图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("圆环图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("气泡图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("簇状条形图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("堆积条形图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("瀑布图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D柱状图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D圆环图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D饼图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D折线图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D百分比堆积条形图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D漏斗图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("3DManhattan 条形图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D堆积条形图"); list_ComboBox[list_ComboBox.Count - 1].Items.Add("3D阶梯线图"); list_ComboBox[list_ComboBox.Count - 1].Name = Convert.ToString(list_ComboBox.Count - 1); list_ComboBox[list_ComboBox.Count - 1].SelectedIndex = 0; list_ComboBox[list_ComboBox.Count - 1].Location = new Point(a_Location.X+chartControl1.Size.Width-100, location_hig); list_ComboBox[list_ComboBox.Count - 1].Size = new Size(100, 5); list_ComboBox[list_ComboBox.Count - 1].SelectedIndexChanged += ComboBox_SelectedIndexChanged; panel1.Controls.Add(chartControl1); panel1.Controls.Add(list_ComboBox[list_ComboBox.Count - 1]); } private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ComboBox comboBox = sender as ComboBox; if (comboBox != null) { DevFunctions.ChangeView2(list_ChartControl[Convert.ToInt32(comboBox.Name)], comboBox.Text); } //DevFunctions.ChangeView2(list_ChartControl[DataNumber], comboBox.Text); } private void CompositionDistributionGrid_Load(object sender, EventArgs e) { list_table_data.Clear(); list_table_size.Clear(); list_table_Point.Clear(); list_fileName.Clear(); string sou = m_condition.m_CurrentConditions[OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE].itemDisplayVal.ToString(); if (sou.Contains("+")) { for (int i = 0; i < sou.Split('+').Length; i++) { ResultFile resultFile = m_ReportApp.m_rstDataMgr.ResultFilesList.Find(s => s.anotherFileName == sou.Split('+')[i]); if (resultFile != null) { BindDataGridView(resultFile.FilePath, i, resultFile.anotherFileName); list_fileName.Add(resultFile.anotherFileName); } } } else { for (int i = 0; i < m_ReportApp.m_rstDataMgr.ResultFilesList.Count; i++) { if (sou == m_ReportApp.m_rstDataMgr.ResultFilesList[i].anotherFileName.ToString()) { BindDataGridView(m_ReportApp.m_rstDataMgr.ResultFilesList[i].FilePath, 0, m_ReportApp.m_rstDataMgr.ResultFilesList[i].anotherFileName); list_fileName.Add(m_ReportApp.m_rstDataMgr.ResultFilesList[i].anotherFileName); } } } } #endregion #region 相关事件 private void ToolStripMenuItem1_Click(object sender, EventArgs e) { OTSGridView otv = (OTSGridView)((ContextMenuStrip)(sender as ToolStripMenuItem).Owner).SourceControl; //复制整个表 CopyAll(otv); } private void ToolStripMenuItem2_Click(object sender, EventArgs e) { OTSGridView otv = (OTSGridView)((ContextMenuStrip)(sender as ToolStripMenuItem).Owner).SourceControl; CopySelected(otv); } /// /// 复制选择区域 /// public void CopySelected(OTSGridView in_ogv) { Clipboard.SetDataObject(((OTSGridView)in_ogv).GetClipboardContent()); } /// /// 复制选择区域 /// public void CopySelected() { DataGridView dgv = (DataGridView)panel1.Controls["Gview_gz"]; //复制选择区域 object oo = dgv.GetClipboardContent(); Clipboard.SetDataObject(dgv.GetClipboardContent()); } /// /// 复制所有 /// public void CopyAll(OTSGridView in_ogv) { in_ogv.SelectAll(); Clipboard.SetDataObject(((OTSGridView)in_ogv).GetClipboardContent()); } /// /// 复制所有 /// public void CopyAll() { DataGridView dgv = (DataGridView)panel1.Controls["Gview_gz"]; dgv.SelectAll(); Clipboard.SetDataObject(((OTSGridView)dgv).GetClipboardContent()); } private void ToolStripMenuItem3_Click(object sender, EventArgs e) { foreach (var item in panel1.Controls) { if (item.GetType().ToString() == "OTSGridView") { panel1.Controls.Remove((OTSGridView)item); } } list_table_data.Clear(); list_table_size.Clear(); list_table_Point.Clear(); list_fileName.Clear(); string sou = source.GetPropItemDisplayValueByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE).ToString(); if (sou.Contains("+")) { for (int i = 0; i < sou.Split('+').Length; i++) { ResultFile resultFile = m_ReportApp.m_rstDataMgr.ResultFilesList.Find(s => s.anotherFileName == sou.Split('+')[i]); if (resultFile != null) { BindDataGridView(resultFile.FilePath, i, resultFile.anotherFileName); list_fileName.Add(resultFile.anotherFileName); } } } else { BindDataGridView(m_ReportApp.m_rstDataMgr.ResultFilesList[m_ReportApp.m_rstDataMgr.GetWorkingResultId()].FilePath, 0, m_ReportApp.m_rstDataMgr.ResultFilesList[m_ReportApp.m_rstDataMgr.GetWorkingResultId()].anotherFileName); list_fileName.Add(m_ReportApp.m_rstDataMgr.ResultFilesList[m_ReportApp.m_rstDataMgr.GetWorkingResultId()].anotherFileName); } } private void Gview_gz_SortCompare(object sender, DataGridViewSortCompareEventArgs e) { //排序中 if (((OTSGridView)sender).Rows[e.RowIndex1].Tag != null && ((OTSGridView)sender).Rows[e.RowIndex1].Tag.ToString() == "统计行") { //ROW1>ROW2 e.SortResult = 1; if (((OTSGridView)sender).SortOrder == SortOrder.Descending) e.SortResult = -1; e.Handled = true; return; } if (((OTSGridView)sender).Rows[e.RowIndex2].Tag != null && ((OTSGridView)sender).Rows[e.RowIndex2].Tag.ToString() == "统计行") { //ROW1 /// 获取到该模块输出后形成的DataTable,和GridView /// /// /// public void GetDataTableAndGridView(out DataTable out_dt, out DataGridView out_dg) { out_dt = m_dt; out_dg = null; foreach (var item in panel1.Controls) { if (item.GetType().ToString() == "OTSGridView") { out_dg = ((OTSGridView)item); } } } #endregion } }