protected override void OnDataBindingComplete(DataGridViewBindingCompleteEventArgs e) { base.OnDataBindingComplete(e); for (int i = 0; i < this.Rows.Count; i += 2) { for (int j = 0; j < m_FixColumnCount; j++) { DataGridViewTextBoxCellEx cell = this[j, i] as DataGridViewTextBoxCellEx; cell.RowSpan = 2; } if (Util.ToString(this["colStatus", i].Value) == EnumOperatorType.Update.ToString()) { //更新行 for (int j = m_FixColumnCount; j < this.Columns.Count; j += 2) { if (Util.ToString(this[j, i].Value) != string.Empty) { DataGridViewTextBoxCellEx cell = this[j, i] as DataGridViewTextBoxCellEx; cell.ColumnSpan = 2; } else { break; } } } } }
/// <summary> /// 方法说明:检查当前单元格是否包含在合并的单元格中 /// 作 者:jason.tang /// 完成时间:2013-01-04 /// </summary> /// <param name="dgv">DataGridView控件</param> private void CheckIsInSpanCells(DataGridView dgv, DataGridView datagridview, DataGridViewTextBoxCellEx cellEx) { //Point p = FindSpanCell(); int rowIndex = cellEx.RowIndex; int colIndex = cellEx.ColumnIndex; int colspan = cellEx.ColumnSpan; int rowspan = cellEx.RowSpan; if (cellEx.RowIndex < rowIndex + rowspan && cellEx.ColumnIndex < colIndex + colspan) { datagridview.CurrentCell = datagridview.Rows[rowIndex].Cells[colIndex]; Rectangle rect = datagridview.GetCellDisplayRectangle(colIndex, rowIndex, false); dgv.Top = rect.Y - 1; dgv.Left = rect.X - 1; } }
public void CrearDataGriedView(bool Actuliazar = false) { Columna ColumnaSelect = Form1.Proyecto_.ColumnaSelect; if (ColumnaSelect != null) { if (ColumnaSelectAnt != ColumnaSelect) { Info_D.Rows.Clear(); NameColum.Text = "Columna: " + ColumnaSelect.Name; for (int i = 0; i < ColumnaSelect.Seccions.Count; i++) { if (ColumnaSelect.Seccions[i].Item1 != null | Actuliazar) { Color Color_RefMen = Color.FromArgb(250, 99, 99); Color Color_RefCum = Color.FromArgb(29, 94, 243); Info_D.Rows.Add(); Info_D.Rows[Info_D.Rows.Count - 1].Cells[0].Value = ColumnaSelect.Seccions[i].Item2; Info_D.Rows[Info_D.Rows.Count - 1].Cells[1].Value = ColumnaSelect.Seccions[i].Item1.Material.FC.ToString(); Info_D.Rows.Add(); Info_D.Rows[Info_D.Rows.Count - 1].Cells[0].Value = ColumnaSelect.Seccions[i].Item2; Info_D.Rows[Info_D.Rows.Count - 1].Cells[1].Value = ColumnaSelect.Seccions[i].Item1.Material.FC.ToString(); Info_D.Rows.Add(); Info_D.Rows[Info_D.Rows.Count - 1].Cells[0].Value = ColumnaSelect.Seccions[i].Item2; Info_D.Rows[Info_D.Rows.Count - 1].Cells[1].Value = ColumnaSelect.Seccions[i].Item1.Material.FC.ToString(); DataGridViewTextBoxCellEx cell = (DataGridViewTextBoxCellEx)Info_D[0, Info_D.Rows.Count - 3]; cell.RowSpan = 3; DataGridViewTextBoxCellEx cell2 = (DataGridViewTextBoxCellEx)Info_D[1, Info_D.Rows.Count - 3]; cell2.RowSpan = 3; double FactorConversion = 10000; Info_D.Rows[Info_D.Rows.Count - 3].Cells["Locali"].Value = "Top"; Info_D.Rows[Info_D.Rows.Count - 2].Cells["Locali"].Value = "Medium"; Info_D.Rows[Info_D.Rows.Count - 1].Cells["Locali"].Value = "Bottom"; double ptop = ColumnaSelect.resultadosETABs[i].AsTopMediumButton[0] / ColumnaSelect.Seccions[i].Item1.Area; double pmedium = ColumnaSelect.resultadosETABs[i].AsTopMediumButton[1] / ColumnaSelect.Seccions[i].Item1.Area; double pbutton = ColumnaSelect.resultadosETABs[i].AsTopMediumButton[2] / ColumnaSelect.Seccions[i].Item1.Area; //Cuantia Mayor al 4% if (ptop >= 0.04) { Info_D.Rows[Info_D.Rows.Count - 3].Cells["AceroR"].Style.BackColor = Color.FromArgb(247, 114, 114); Info_D.Rows[Info_D.Rows.Count - 3].Cells["AceroR"].ToolTipText = "Acero requerido mayor a la cuantía máxima permisible."; Info_D.Rows[Info_D.Rows.Count - 3].Cells["AceroR"].Style.Font = new Font("Vderdana", 8, FontStyle.Bold); } if (pmedium >= 0.04) { Info_D.Rows[Info_D.Rows.Count - 2].Cells["AceroR"].Style.BackColor = Color.FromArgb(247, 114, 114); Info_D.Rows[Info_D.Rows.Count - 2].Cells["AceroR"].ToolTipText = "Acero requerido mayor a la cuantía máxima permisible."; Info_D.Rows[Info_D.Rows.Count - 2].Cells["AceroR"].Style.Font = new Font("Vderdana", 8, FontStyle.Bold); } if (pbutton >= 0.04) { Info_D.Rows[Info_D.Rows.Count - 1].Cells["AceroR"].Style.BackColor = Color.FromArgb(247, 114, 114); Info_D.Rows[Info_D.Rows.Count - 1].Cells["AceroR"].ToolTipText = "Acero requerido mayor a la cuantía máxima permisible."; Info_D.Rows[Info_D.Rows.Count - 1].Cells["AceroR"].Style.Font = new Font("Vderdana", 8, FontStyle.Bold); } //Cuantia Mayor al 4% Info_D.Rows[Info_D.Rows.Count - 3].Cells["AceroR"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].AsTopMediumButton[0] * FactorConversion, 2); Info_D.Rows[Info_D.Rows.Count - 2].Cells["AceroR"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].AsTopMediumButton[1] * FactorConversion, 2); Info_D.Rows[Info_D.Rows.Count - 1].Cells["AceroR"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].AsTopMediumButton[2] * FactorConversion, 2); Info_D.Rows[Info_D.Rows.Count - 3].Cells["Asasign"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].As_asignado[0] * FactorConversion, 2); Info_D.Rows[Info_D.Rows.Count - 2].Cells["Asasign"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].As_asignado[1] * FactorConversion, 2); Info_D.Rows[Info_D.Rows.Count - 1].Cells["Asasign"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].As_asignado[2] * FactorConversion, 2); if (ColumnaSelect.resultadosETABs[i].prequerida == null) { ColumnaSelect.CrearCuantiaProyectoAntiguos(i); } Info_D.Rows[Info_D.Rows.Count - 3].Cells["prequerida"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].prequerida[0], 2) + "%"; Info_D.Rows[Info_D.Rows.Count - 2].Cells["prequerida"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].prequerida[1], 2) + "%"; Info_D.Rows[Info_D.Rows.Count - 1].Cells["prequerida"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].prequerida[2], 2) + "%"; Info_D.Rows[Info_D.Rows.Count - 3].Cells["pasignada"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].pasignada[0], 2) + "%"; Info_D.Rows[Info_D.Rows.Count - 2].Cells["pasignada"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].pasignada[1], 2) + "%"; Info_D.Rows[Info_D.Rows.Count - 1].Cells["pasignada"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].pasignada[2], 2) + "%"; if (Math.Round(ColumnaSelect.resultadosETABs[i].Porct_Refuerzo[0], 3) > 105 | Math.Round(ColumnaSelect.resultadosETABs[i].Porct_Refuerzo[0], 3) < 95) { Info_D.Rows[Info_D.Rows.Count - 3].Cells["Porc_Ref"].Style.ForeColor = Color_RefMen; Info_D.Rows[Info_D.Rows.Count - 3].Cells["Porc_Ref"].Style.Font = new Font("Vderdana", 8, FontStyle.Bold); } else { Info_D.Rows[Info_D.Rows.Count - 3].Cells["Porc_Ref"].Style.ForeColor = Color_RefCum; Info_D.Rows[Info_D.Rows.Count - 3].Cells["Porc_Ref"].Style.Font = new Font("Vderdana", 8, FontStyle.Bold); } if (Math.Round(ColumnaSelect.resultadosETABs[i].Porct_Refuerzo[1], 3) > 105 | Math.Round(ColumnaSelect.resultadosETABs[i].Porct_Refuerzo[1], 3) < 95) { Info_D.Rows[Info_D.Rows.Count - 2].Cells["Porc_Ref"].Style.ForeColor = Color_RefMen; Info_D.Rows[Info_D.Rows.Count - 2].Cells["Porc_Ref"].Style.Font = new Font("Vderdana", 8, FontStyle.Bold); } else { Info_D.Rows[Info_D.Rows.Count - 2].Cells["Porc_Ref"].Style.ForeColor = Color_RefCum; Info_D.Rows[Info_D.Rows.Count - 2].Cells["Porc_Ref"].Style.Font = new Font("Vderdana", 8, FontStyle.Bold); } if (Math.Round(ColumnaSelect.resultadosETABs[i].Porct_Refuerzo[2], 3) > 105 | Math.Round(ColumnaSelect.resultadosETABs[i].Porct_Refuerzo[2], 3) < 95) { Info_D.Rows[Info_D.Rows.Count - 1].Cells["Porc_Ref"].Style.ForeColor = Color_RefMen; Info_D.Rows[Info_D.Rows.Count - 1].Cells["Porc_Ref"].Style.Font = new Font("Vderdana", 8, FontStyle.Bold); } else { Info_D.Rows[Info_D.Rows.Count - 1].Cells["Porc_Ref"].Style.ForeColor = Color_RefCum; Info_D.Rows[Info_D.Rows.Count - 1].Cells["Porc_Ref"].Style.Font = new Font("Vderdana", 8, FontStyle.Bold); } Info_D.Rows[Info_D.Rows.Count - 3].Cells["Porc_Ref"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].Porct_Refuerzo[0], 2) + "%"; Info_D.Rows[Info_D.Rows.Count - 2].Cells["Porc_Ref"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].Porct_Refuerzo[1], 2) + "%"; Info_D.Rows[Info_D.Rows.Count - 1].Cells["Porc_Ref"].Value = Math.Round(ColumnaSelect.resultadosETABs[i].Porct_Refuerzo[2], 2) + "%"; float FCMetros = 100; if (ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.Rectangular) { Info_D.Rows[Info_D.Rows.Count - 3].Cells["B"].Value = ColumnaSelect.Seccions[i].Item1.B * FCMetros; Info_D.Rows[Info_D.Rows.Count - 3].Cells["H"].Value = ColumnaSelect.Seccions[i].Item1.H * FCMetros; Info_D.Rows[Info_D.Rows.Count - 3].Cells["TW"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 3].Cells["TF"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 2].Cells["B"].Value = ColumnaSelect.Seccions[i].Item1.B * FCMetros; Info_D.Rows[Info_D.Rows.Count - 2].Cells["H"].Value = ColumnaSelect.Seccions[i].Item1.H * FCMetros; Info_D.Rows[Info_D.Rows.Count - 2].Cells["TW"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 2].Cells["TF"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 1].Cells["B"].Value = ColumnaSelect.Seccions[i].Item1.B * FCMetros; Info_D.Rows[Info_D.Rows.Count - 1].Cells["H"].Value = ColumnaSelect.Seccions[i].Item1.H * FCMetros; Info_D.Rows[Info_D.Rows.Count - 1].Cells["TW"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 1].Cells["TF"].Style.BackColor = Color.LightGray; DataGridViewTextBoxCellEx cell3 = (DataGridViewTextBoxCellEx)Info_D["B", Info_D.Rows.Count - 3]; DataGridViewTextBoxCellEx cell4 = (DataGridViewTextBoxCellEx)Info_D["H", Info_D.Rows.Count - 3]; DataGridViewTextBoxCellEx cell5 = (DataGridViewTextBoxCellEx)Info_D["TW", Info_D.Rows.Count - 3]; DataGridViewTextBoxCellEx cell6 = (DataGridViewTextBoxCellEx)Info_D["TF", Info_D.Rows.Count - 3]; cell3.RowSpan = 3; cell4.RowSpan = 3; cell5.RowSpan = 3;; cell6.RowSpan = 3; } if (ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.Circle) { Info_D.Rows[Info_D.Rows.Count - 3].Cells["B"].Value = ColumnaSelect.Seccions[i].Item1.B * FCMetros; Info_D.Rows[Info_D.Rows.Count - 3].Cells["H"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 3].Cells["TW"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 3].Cells["TF"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 2].Cells["B"].Value = ColumnaSelect.Seccions[i].Item1.B * FCMetros; Info_D.Rows[Info_D.Rows.Count - 2].Cells["H"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 2].Cells["TW"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 2].Cells["TF"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 1].Cells["B"].Value = ColumnaSelect.Seccions[i].Item1.B * FCMetros; Info_D.Rows[Info_D.Rows.Count - 1].Cells["H"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 1].Cells["TW"].Style.BackColor = Color.LightGray; Info_D.Rows[Info_D.Rows.Count - 1].Cells["TF"].Style.BackColor = Color.LightGray; DataGridViewTextBoxCellEx cell3 = (DataGridViewTextBoxCellEx)Info_D["B", Info_D.Rows.Count - 3]; DataGridViewTextBoxCellEx cell4 = (DataGridViewTextBoxCellEx)Info_D["H", Info_D.Rows.Count - 3]; DataGridViewTextBoxCellEx cell5 = (DataGridViewTextBoxCellEx)Info_D["TW", Info_D.Rows.Count - 3]; DataGridViewTextBoxCellEx cell6 = (DataGridViewTextBoxCellEx)Info_D["TF", Info_D.Rows.Count - 3]; cell3.RowSpan = 3; cell4.RowSpan = 3; cell5.RowSpan = 3;; cell6.RowSpan = 3; } if (ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.Tee | ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.L) { CSD SeccionTL = (CSD)ColumnaSelect.Seccions[i].Item1; Info_D.Rows[Info_D.Rows.Count - 3].Cells["B"].Value = SeccionTL.B * FCMetros; Info_D.Rows[Info_D.Rows.Count - 3].Cells["H"].Value = SeccionTL.H * FCMetros; Info_D.Rows[Info_D.Rows.Count - 3].Cells["TW"].Value = SeccionTL.TW * FCMetros; Info_D.Rows[Info_D.Rows.Count - 3].Cells["TF"].Value = SeccionTL.TF * FCMetros; Info_D.Rows[Info_D.Rows.Count - 2].Cells["B"].Value = SeccionTL.B * FCMetros; Info_D.Rows[Info_D.Rows.Count - 2].Cells["H"].Value = SeccionTL.H * FCMetros; Info_D.Rows[Info_D.Rows.Count - 2].Cells["TW"].Value = SeccionTL.TW * FCMetros; Info_D.Rows[Info_D.Rows.Count - 2].Cells["TF"].Value = SeccionTL.TF * FCMetros; Info_D.Rows[Info_D.Rows.Count - 1].Cells["B"].Value = SeccionTL.B * FCMetros; Info_D.Rows[Info_D.Rows.Count - 1].Cells["H"].Value = SeccionTL.H * FCMetros; Info_D.Rows[Info_D.Rows.Count - 1].Cells["TW"].Value = SeccionTL.TW * FCMetros; Info_D.Rows[Info_D.Rows.Count - 1].Cells["TF"].Value = SeccionTL.TF * FCMetros; DataGridViewTextBoxCellEx cell3 = (DataGridViewTextBoxCellEx)Info_D["B", Info_D.Rows.Count - 3]; DataGridViewTextBoxCellEx cell4 = (DataGridViewTextBoxCellEx)Info_D["H", Info_D.Rows.Count - 3]; DataGridViewTextBoxCellEx cell5 = (DataGridViewTextBoxCellEx)Info_D["TW", Info_D.Rows.Count - 3]; DataGridViewTextBoxCellEx cell6 = (DataGridViewTextBoxCellEx)Info_D["TF", Info_D.Rows.Count - 3]; cell3.RowSpan = 3; cell4.RowSpan = 3; cell5.RowSpan = 3;; cell6.RowSpan = 3; } } } ColumnaSelectAnt = ColumnaSelect; } } EstiloDatGridView(Info_D); }
/// <summary> /// 方法说明:增加明细框Grid /// 作者:jason.tang /// 完成时间:2013-02-05 /// </summary> /// <param name="top">上边距</param> /// <param name="left">下边距</param> /// <param name="objColumns">明细列集合</param> /// <param name="cellEx">单元格</param> private void AddDetailGridView(int top, int left, object objColumns, DataGridViewTextBoxCellEx cellEx, DataGridView datagridview, List <DetailGridViewTextBoxColumn> _dicColumns) { DataGridView dgv = new DataGridView(); dgv.Name = string.Format("dgv{0}&{1}&{2}@{3}", cellEx.RowIndex, cellEx.ColumnIndex, Guid.NewGuid().ToString(), pageCount); dgv.BackgroundColor = Color.White; #region 明细框位置设定 dgv.Top = top; dgv.Left = left; //dgv.Name = string.Format("dgv{0}-{1}", cellEx.RowIndex.ToString(), cellEx.ColumnIndex.ToString()); List <DetailGridViewTextBoxColumn> listColumns = new List <DetailGridViewTextBoxColumn>(); if (objColumns != null) { DetailGridViewTextBoxColumn textBoxColumn; DetailCell[] detailCells = new DetailCell[] { }; string type = objColumns.GetType().ToString(); if (objColumns.GetType() == detailCells.GetType()) { detailCells = objColumns as DetailCell[]; foreach (DetailCell cell in detailCells) { textBoxColumn = new DetailGridViewTextBoxColumn(); textBoxColumn.Width = cell.ColumnWidth; textBoxColumn.Content = cell.Content; textBoxColumn.DetailSplitLine = cell.DetailLine; textBoxColumn.HeaderText = cell.HeaderText; textBoxColumn.Lans = cell.Lans; textBoxColumn.Length = cell.Length; textBoxColumn.ColumnName = cell.Name; textBoxColumn.PerProcessRow = cell.PerProcessRow; textBoxColumn.SplitLineInProcess = cell.ProcessDetailLine; textBoxColumn.Rows = cell.Rows.ToString(); textBoxColumn.SerialNumber = cell.SerialNumber; textBoxColumn.Source = cell.Source; textBoxColumn.SpaceRows = cell.SpaceRows.ToString(); textBoxColumn.Tag = cell.Tag; textBoxColumn.Type = string.IsNullOrEmpty(cell.Type) ? (ComboBoxSourceHelper.CellStyle)Enum.Parse(typeof(ComboBoxSourceHelper.CellStyle), "0") : (ComboBoxSourceHelper.CellStyle)Enum.Parse(typeof(ComboBoxSourceHelper.CellStyle), cell.Type); textBoxColumn.Visible = cell.AdvanceProperty != ((ComboBoxSourceHelper.AdvanceProperty)Enum.Parse(typeof(ComboBoxSourceHelper.AdvanceProperty), "3")).ToString(); textBoxColumn.AdvanceProperty = !string.IsNullOrEmpty(cell.AdvanceProperty) ? (ComboBoxSourceHelper.AdvanceProperty)Enum.Parse(typeof(ComboBoxSourceHelper.AdvanceProperty), cell.AdvanceProperty) : (ComboBoxSourceHelper.AdvanceProperty)Enum.Parse(typeof(ComboBoxSourceHelper.AdvanceProperty), "0"); textBoxColumn.SerialStep = cell.SerialStep; textBoxColumn.ColumnValue = cell.ColumnValue; listColumns.Add(textBoxColumn); if (_dicColumns != null && !_dicColumns.Contains(textBoxColumn)) { _dicColumns.Add(textBoxColumn); } } } } dgv.Width = datagridview.Columns[cellEx.ColumnIndex].Width; dgv.Height = datagridview.Rows[cellEx.RowIndex].Height; #endregion #region 明细框:处理合并的单元格 int colspan = cellEx.ColumnSpan; int rowspan = cellEx.RowSpan; if (colspan > 1) { for (int i = 1; i < colspan; i++) { dgv.Width += datagridview.Columns[cellEx.ColumnIndex + i].Width; } } if (rowspan > 1) { for (int i = 1; i < rowspan; i++) { dgv.Height += datagridview.Rows[cellEx.RowIndex + i].Height; } } #endregion #region 明细框列表属性配置 dgv.RowHeadersVisible = false; dgv.BorderStyle = BorderStyle.None; //dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dgv.ReadOnly = true; dgv.ScrollBars = ScrollBars.None; dgv.BorderStyle = BorderStyle.None; dgv.AllowUserToAddRows = false; dgv.AllowUserToResizeColumns = false; dgv.AllowUserToResizeRows = false; dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; //dgv.EditMode = DataGridViewEditMode.EditOnEnter; if (listColumns.Count > 0) { dgv.Rows.Clear(); dgv.Columns.Clear(); dgv.DefaultCellStyle.SelectionBackColor = Color.WhiteSmoke; dgv.DefaultCellStyle.SelectionForeColor = Color.Black; int totalWidth = 0; int totalRows = 1; string tag = string.Empty; foreach (DetailGridViewTextBoxColumn column in listColumns) { dgv.Columns.Add(column); totalWidth += column.Width; } if (totalWidth < dgv.Width) { dgv.Columns[dgv.Columns.Count - 1].Width += dgv.Width - totalWidth; } if (listColumns != null && listColumns.Count > 0) { DetailGridViewTextBoxColumn columns = (DetailGridViewTextBoxColumn)listColumns[0]; totalRows = int.Parse(columns.Rows); for (int i = 0; i < totalRows; i++) { dgv.Rows.Insert(i, 1); } } int rowHeight = dgv.Height - 23; //总宽度不足,补充到最后一列 for (int i = 0; i < totalRows; i++) { dgv.Rows[i].Height = rowHeight / totalRows; if (i == totalRows - 1) { dgv.Rows[i].Height = rowHeight / totalRows + rowHeight % totalRows; } } } int colRange = 0; foreach (DetailGridViewTextBoxColumn column in listColumns) { string columnValue = ((DetailGridViewTextBoxColumn)column).ColumnValue; if (!string.IsNullOrEmpty(columnValue) && string.IsNullOrEmpty(column.Source)) { string[] strValues = columnValue.Split(new char[] { ',' }); int rowRange = 0; foreach (DataGridViewRow row in dgv.Rows) { row.Cells[colRange].Value = strValues[rowRange]; rowRange++; } }//来源不为空,则自动带出来源数据 else if (!string.IsNullOrEmpty(column.Source) && ModuleObject != null) { foreach (PropertyInfo pi in ModuleObject.GetType().GetProperties()) { if (pi.Name.ToLower() == column.Source.ToLower() && pi.GetValue(ModuleObject, new object[] { }) != null) { columnValue = pi.GetValue(ModuleObject, new object[] { }).ToString(); break; } } int rowRange = 0; foreach (DataGridViewRow row in dgv.Rows) { row.Cells[colRange].Value = columnValue; rowRange++; } } colRange++; } //dgv.CellClick += dgv_CellClick; //dgv.CellDoubleClick += DataGridView_CellDoubleClick; //dgv.CellMouseDown += DataGridView_CellMouseDown; //dgv.EditingControlShowing += dgv_EditingControlShowing; //dgv.KeyDown += dgv_KeyDown; //dgv.CellBeginEdit += dgv_CellBeginEdit; //dgvTemp = dgv; SetSerialNumberColumn(dgv); datagridview.Controls.Add(dgv); #endregion }
private void CreateDataGridView() { Columna ColumnaSelect = Form1.Proyecto_.ColumnaSelect; if (ColumnaSelect != null) { if (ColumnaSelect.CantEstribos_Sepa == null) { ColumnaSelect.CantEstribos_Sepa = new System.Collections.Generic.List <object[]>(); for (int i = ColumnaSelect.LuzAcum.Count - 1; i >= 0; i--) { ColumnaSelect.CantEstribos_Sepa.Add(new object[] { 0, 0, 0, 0, 0, 0 }); } for (int i = ColumnaSelect.LuzAcum.Count - 1; i >= 0; i--) { if (ColumnaSelect.Seccions[i].Item1.Estribo == null) { CalCuantiaVol(ColumnaSelect.Seccions[i].Item1, false, i); } ColumnaSelect.CantidadEstribos(i); } } if (ColumnaSelectAnt != ColumnaSelect) { Info_Es_Col.Rows.Clear(); NameColum.Text = "Columna: " + ColumnaSelect.Name; float FCMetros = 100; Info_Es_Col.Rows.Add(); EncabezadosDataGridView(); for (int i = 0; i < ColumnaSelect.Seccions.Count; i++) { if (ColumnaSelect.Seccions[i].Item1 != null) { if (ColumnaSelect.Seccions[i].Item1.Estribo == null) { CalCuantiaVol(ColumnaSelect.Seccions[i].Item1, false, i); } Info_Es_Col.Rows.Add(ColumnaSelect.Seccions[i].Item2); Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells[0].Value = ColumnaSelect.Seccions[i].Item2; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells[1].Value = ColumnaSelect.Seccions[i].Item1.Material.FC.ToString(); Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells[0].ReadOnly = true; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells[1].ReadOnly = true; if (ColumnaSelect.Seccions[i].Item1.Estribo != null) { Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["NoEstribo"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoEstribo.ToString(); Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["S_value"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.Separacion.ToString(); Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["CantEstribos"].Value = (int)ColumnaSelect.CantEstribos_Sepa[i][0] + (int)ColumnaSelect.CantEstribos_Sepa[i][1] + (int)ColumnaSelect.CantEstribos_Sepa[i][2] + (int)ColumnaSelect.CantEstribos_Sepa[i][3]; int CantEstribos = (int)ColumnaSelect.CantEstribos_Sepa[i][0] + (int)ColumnaSelect.CantEstribos_Sepa[i][1] + (int)ColumnaSelect.CantEstribos_Sepa[i][2] + (int)ColumnaSelect.CantEstribos_Sepa[i][3]; float PesoEstribos = (float)ColumnaSelect.Seccions[i].Item1.Peso_Estribo(ColumnaSelect.Seccions[i].Item1.Estribo, 0.04f, CantEstribos); Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["PesoEstribos"].Value = String.Format("{0:0.00}", PesoEstribos); } else { Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["S_value"].Value = 0; } Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["CantEstribos"].ReadOnly = true; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["NoEstribo"].ReadOnly = false; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["S_value"].ReadOnly = false; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["PesoEstribos"].ReadOnly = true; if (ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.Rectangular) { DataGridViewTextBoxCellEx cell0 = (DataGridViewTextBoxCellEx)Info_Es_Col["NoRamasV_1", 0]; cell0.ColumnSpan = 2; DataGridViewTextBoxCellEx cell00 = (DataGridViewTextBoxCellEx)Info_Es_Col["NoRamas_H1", 0]; cell00.ColumnSpan = 2; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["B"].Value = ColumnaSelect.Seccions[i].Item1.B * FCMetros; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["H"].Value = ColumnaSelect.Seccions[i].Item1.H * FCMetros; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["TW"].Style.BackColor = Color.LightGray; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["TF"].Style.BackColor = Color.LightGray; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["NoRamasV_1"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasV1; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["NoRamasV_2"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasV2; DataGridViewTextBoxCellEx cell1 = (DataGridViewTextBoxCellEx)Info_Es_Col["NoRamasV_1", Info_Es_Col.Rows.Count - 1]; cell1.ColumnSpan = 2; Info_Es_Col.Rows[0].Cells["NoRamasV_1"].Value = "No. Ramas Vertical"; Info_Es_Col.Rows[0].Cells["NoRamas_H1"].Value = "No. Ramas Horizontal"; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["NoRamas_H1"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasH1; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["NoRamas_H2"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasH2; DataGridViewTextBoxCellEx cell2 = (DataGridViewTextBoxCellEx)Info_Es_Col["NoRamas_H1", Info_Es_Col.Rows.Count - 1]; cell2.ColumnSpan = 2; } if (ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.Circle) { Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["B"].Value = ColumnaSelect.Seccions[i].Item1.B * FCMetros; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["H"].Style.BackColor = Color.LightGray; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["TW"].Style.BackColor = Color.LightGray; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["TF"].Style.BackColor = Color.LightGray; } if (ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.Tee | ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.L) { CSD SeccionTL = (CSD)ColumnaSelect.Seccions[i].Item1; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["B"].Value = SeccionTL.B * FCMetros; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["H"].Value = SeccionTL.H * FCMetros; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["TW"].Value = SeccionTL.TW * FCMetros; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["TF"].Value = SeccionTL.TF * FCMetros; Info_Es_Col.Rows[0].Cells["NoRamasV_1"].Value = "No. Ramas Vertical"; Info_Es_Col.Rows[0].Cells["NoRamas_H1"].Value = "No. Ramas Horizontal"; Info_Es_Col.Rows[0].Cells["NoRamasV_2"].Value = "No. Ramas Vertical"; Info_Es_Col.Rows[0].Cells["NoRamas_H2"].Value = "No. Ramas Horizontal"; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["NoRamasV_1"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasV1; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["NoRamasV_2"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasV2; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["NoRamas_H1"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasH1; Info_Es_Col.Rows[Info_Es_Col.Rows.Count - 1].Cells["NoRamas_H2"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasH2; } } } ColumnaSelectAnt = ColumnaSelect; } EstiloDatGridView(); } }
private void CambiosDataGridView(int i) { Columna ColumnaSelect = Form1.Proyecto_.ColumnaSelect; NameColum.Text = "Columna: " + ColumnaSelect.Name; if (ColumnaSelect.Seccions[i].Item1 != null) { int IndiceRow = 0; for (int j = 0; j < Info_Es_Col.Rows.Count; j++) { if (Info_Es_Col.Rows[j].Cells[0].Value.ToString() == ColumnaSelect.Seccions[i].Item2) { IndiceRow = j; } } Info_Es_Col.Rows[IndiceRow].Cells["NoEstribo"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoEstribo.ToString(); Info_Es_Col.Rows[IndiceRow].Cells["S_value"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.Separacion.ToString(); Info_Es_Col.Rows[IndiceRow].Cells["CantEstribos"].Value = (int)ColumnaSelect.CantEstribos_Sepa[i][0] + (int)ColumnaSelect.CantEstribos_Sepa[i][1] + (int)ColumnaSelect.CantEstribos_Sepa[i][2] + (int)ColumnaSelect.CantEstribos_Sepa[i][3]; int CantEstribos = (int)ColumnaSelect.CantEstribos_Sepa[i][0] + (int)ColumnaSelect.CantEstribos_Sepa[i][1] + (int)ColumnaSelect.CantEstribos_Sepa[i][2] + (int)ColumnaSelect.CantEstribos_Sepa[i][3]; float PesoEstribos = (float)ColumnaSelect.Seccions[i].Item1.Peso_Estribo(ColumnaSelect.Seccions[i].Item1.Estribo, 0.04f, CantEstribos); Info_Es_Col.Rows[IndiceRow].Cells["PesoEstribos"].Value = String.Format("{0:0.00}", PesoEstribos); if (ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.Rectangular) { DataGridViewTextBoxCellEx cell0 = (DataGridViewTextBoxCellEx)Info_Es_Col["NoRamasV_1", 0]; cell0.ColumnSpan = 2; DataGridViewTextBoxCellEx cell00 = (DataGridViewTextBoxCellEx)Info_Es_Col["NoRamas_H1", 0]; cell00.ColumnSpan = 2; Info_Es_Col.Rows[IndiceRow].Cells["NoRamasV_1"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasV1; Info_Es_Col.Rows[IndiceRow].Cells["NoRamasV_2"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasV1; DataGridViewTextBoxCellEx cell1 = (DataGridViewTextBoxCellEx)Info_Es_Col["NoRamasV_1", Info_Es_Col.Rows.Count - 1]; cell1.ColumnSpan = 2; Info_Es_Col.Rows[IndiceRow].Cells["NoRamas_H1"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasH1; Info_Es_Col.Rows[IndiceRow].Cells["NoRamas_H2"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasH1; DataGridViewTextBoxCellEx cell2 = (DataGridViewTextBoxCellEx)Info_Es_Col["NoRamas_H1", Info_Es_Col.Rows.Count - 1]; cell2.ColumnSpan = 2; } if (ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.Circle) { } if (ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.Tee | ColumnaSelect.Seccions[i].Item1.Shape == TipodeSeccion.L) { Info_Es_Col.Rows[IndiceRow].Cells["NoRamasV_1"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasV1; Info_Es_Col.Rows[IndiceRow].Cells["NoRamasV_2"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasV2; Info_Es_Col.Rows[IndiceRow].Cells["NoRamas_H1"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasH1; Info_Es_Col.Rows[IndiceRow].Cells["NoRamas_H2"].Value = ColumnaSelect.Seccions[i].Item1.Estribo.NoRamasH2; } } }
/// <summary> /// 方法说明:增加明细框Grid /// 作者:jason.tang /// 完成时间:2012-12-22 /// </summary> /// <param name="top">上边距</param> /// <param name="left">下边距</param> /// <param name="objColumns">明细列集合</param> private void AddDetailGridView(int top, int left, object objColumns, List <DetailGridViewTextBoxColumn> _dicColumns, DataGridView datagridview, DataGridViewTextBoxCellEx cellEx) { DataGridView dgv = new DataGridView(); dgv.BackgroundColor = Color.White; #region 明细框位置设定 dgv.Top = top; dgv.Left = left; CheckIsInSpanCells(dgv, datagridview, cellEx); dgv.Name = string.Format("dgv{0}-{1}", cellEx.RowIndex.ToString(), cellEx.ColumnIndex.ToString()); List <DetailGridViewTextBoxColumn> listColumns = new List <DetailGridViewTextBoxColumn>(); if (objColumns != null) { List <DetailGridViewTextBoxColumn> dicColumns = objColumns as List <DetailGridViewTextBoxColumn>; DetailGridViewTextBoxColumn textBoxColumn; DetailCell[] detailCells = new DetailCell[] { }; string type = objColumns.GetType().ToString(); if (objColumns.GetType() == detailCells.GetType()) { detailCells = objColumns as DetailCell[]; foreach (DetailCell cell in detailCells) { textBoxColumn = new DetailGridViewTextBoxColumn(); textBoxColumn.Width = cell.ColumnWidth; textBoxColumn.Content = cell.Content; textBoxColumn.DetailSplitLine = cell.DetailLine; textBoxColumn.HeaderText = cell.HeaderText; textBoxColumn.Lans = cell.Lans; textBoxColumn.Length = cell.Length; textBoxColumn.ColumnName = cell.Name; textBoxColumn.PerProcessRow = cell.PerProcessRow; textBoxColumn.SplitLineInProcess = cell.ProcessDetailLine; textBoxColumn.Rows = cell.Rows.ToString(); textBoxColumn.SerialNumber = cell.SerialNumber; textBoxColumn.Source = cell.Source; textBoxColumn.SpaceRows = cellEx.SpaceRows.ToString(); //cell.SpaceRows.ToString(); textBoxColumn.Tag = cell.Tag; textBoxColumn.Type = string.IsNullOrEmpty(cell.Type) ? (ComboBoxSourceHelper.CellStyle)Enum.Parse(typeof(ComboBoxSourceHelper.CellStyle), "0") : (ComboBoxSourceHelper.CellStyle)Enum.Parse(typeof(ComboBoxSourceHelper.CellStyle), cell.Type); textBoxColumn.Visible = cell.AdvanceProperty != ((ComboBoxSourceHelper.AdvanceProperty)Enum.Parse(typeof(ComboBoxSourceHelper.AdvanceProperty), "3")).ToString(); textBoxColumn.AdvanceProperty = !string.IsNullOrEmpty(cell.AdvanceProperty) ? (ComboBoxSourceHelper.AdvanceProperty)Enum.Parse(typeof(ComboBoxSourceHelper.AdvanceProperty), cell.AdvanceProperty) : (ComboBoxSourceHelper.AdvanceProperty)Enum.Parse(typeof(ComboBoxSourceHelper.AdvanceProperty), "0"); textBoxColumn.SerialStep = cellEx.SerialStep; //cell.SerialStep; listColumns.Add(textBoxColumn); if (_dicColumns != null && !_dicColumns.Contains(textBoxColumn)) { _dicColumns.Add(textBoxColumn); } } } else if (dicColumns != null) { foreach (DetailGridViewTextBoxColumn col in dicColumns) { col.SerialStep = cellEx.SerialStep; col.SpaceRows = cellEx.SpaceRows.ToString(); listColumns.Add(col); } } } if (datagridview.Controls.ContainsKey(dgv.Name) && objColumns != null) { SetDataGridViewColumns(listColumns, dgv.Name, datagridview); return; } dgv.Width = datagridview.Columns[datagridview.CurrentCell.ColumnIndex].Width; dgv.Height = datagridview.Rows[datagridview.CurrentCell.RowIndex].Height; #endregion #region 明细框:处理合并的单元格 int colspan = (datagridview.CurrentCell as DataGridViewTextBoxCellEx).ColumnSpan; int rowspan = (datagridview.CurrentCell as DataGridViewTextBoxCellEx).RowSpan; if (colspan > 1) { for (int i = 1; i < colspan; i++) { dgv.Width += datagridview.Columns[datagridview.CurrentCell.ColumnIndex + i].Width; } } if (rowspan > 1) { for (int i = 1; i < rowspan; i++) { dgv.Height += datagridview.Rows[datagridview.CurrentCell.RowIndex + i].Height; } } #endregion #region 明细框列表属性配置 Control[] controls = datagridview.Controls.Find(dgv.Name, false); if (controls.Length > 0) { dgv = (DataGridView)controls[0]; dgv.Rows.Clear(); dgv.Columns.Clear(); } dgv.Columns.Add("", ""); dgv.Columns.Add("", ""); //dgv.ColumnHeadersVisible = false; dgv.Rows[0].Height = dgv.Height; dgv.Columns[0].Width = 25; dgv.Columns[1].Width = dgv.Width - 25; dgv.DefaultCellStyle.SelectionBackColor = Color.WhiteSmoke; dgv.BorderStyle = BorderStyle.None; //dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dgv.RowHeadersVisible = false; dgv.ReadOnly = true; dgv.ScrollBars = ScrollBars.None; dgv.AutoGenerateColumns = false; dgv.AllowUserToResizeColumns = true; dgv.AllowUserToResizeRows = false; dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; //dgv.RowHeightChanged += dgv_RowHeightChanged; datagridview.Controls.Add(dgv); if (listColumns.Count > 0) { SetDataGridViewColumns(listColumns, dgv.Name, datagridview); } #endregion }