/// <summary> /// 列表选择值变化 /// </summary> private void lbColumns_SelectedValueChanged(object sender, EventArgs e) { pgrdColumns.SelectedObject = ((ListBox)sender).SelectedValue; btnMoveUp.Enabled = lbColumns.SelectedIndex != 0; btnMoveDown.Enabled = lbColumns.SelectedIndex != lbColumns.Items.Count - 1; if (pgrdColumns.SelectedObject == null) { return; } Object obj = ((ListBox)sender).SelectedValue; DetailGridViewTextBoxColumn column = (DetailGridViewTextBoxColumn)obj; bool readOnly = column.AdvanceProperty != (ComboBoxSourceHelper.AdvanceProperty)Enum.Parse(typeof(ComboBoxSourceHelper.AdvanceProperty), "1"); //固定单元格时显示内容选项 PropertyDescriptorCollection props = TypeDescriptor.GetProperties(obj); foreach (PropertyDescriptor pd in props) { if (pd.Name == "SerialStep") { SetPropertyReadOnly(obj, pd.Name, readOnly); } } pgrdColumns.SelectedObject = obj; }
/// <summary> /// 删除列 /// </summary> private void btnDeleteColumn_Click(object sender, EventArgs e) { if (lbColumns.SelectedValue != null) { //得到当前选中项的索引 int currIndex = lbColumns.SelectedIndex; try { DetailGridViewTextBoxColumn col = (DetailGridViewTextBoxColumn)lbColumns.SelectedValue; dicColumns.Remove(col.ColumnName); if (dicColumns.Count == 0) { lbColumns.DataSource = null; InitVariable(true); } else { lbColumns.DataSource = new BindingSource(dicColumns, null); } //删除当前项之后,默认选择前一项 lbColumns.SelectedIndex = currIndex - 1; //当选择删除的项为第一项,但其下面还有其他项时,默认选择删除后的第一项 if (currIndex == 0 && lbColumns.Items.Count > 0) { lbColumns.SelectedIndex = 0; } } catch { } } }
/// <summary> /// 方法说明:重置所有列宽 /// 作 者:jason.tang /// 完成时间:2013-07-29 /// </summary> private void ResizeColumnWidth() { DetailGridViewTextBoxColumn col = new DetailGridViewTextBoxColumn(); Dictionary <string, DetailGridViewTextBoxColumn> dic = new Dictionary <string, DetailGridViewTextBoxColumn>(); foreach (var key in dicColumns.Keys) { col = new DetailGridViewTextBoxColumn(); col = dicColumns[key]; //col.Name = dicColumns[key].Name; col.SerialNumber = dicColumns[key].SerialNumber; col.Rows = dicColumns[key].Rows; col.Visible = dicColumns[key].Visible; col.ColumnName = dicColumns[key].ColumnName; col.HeaderText = dicColumns[key].HeaderText; col.Width = 5; dic.Add(key, col); } dicColumns.Clear(); dicColumns = dic; lbColumns.DataSource = new BindingSource(dic, null); lbColumns.SelectedIndex = lbColumns.Items.Count - 1; }
/// <summary> /// 方法说明:增加列 /// 作 者:jason.tang /// 完成时间:2013-01-09 /// </summary> private void AddColumn() { DetailGridViewTextBoxColumn col = new DetailGridViewTextBoxColumn(); if (dicColumns == null) { dicColumns = new Dictionary <string, DetailGridViewTextBoxColumn>(); } int totalWidth = GetColumnWidthCount(); //当剩余的列宽不够时,返回 if (_totalWidth - totalWidth <= 0) { DialogResult result = MessageBox.Show("列宽已经达到明细框的最大宽度了,是否需要重新分配?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result == System.Windows.Forms.DialogResult.No) { return; } pgrdColumns.SelectedObject = null; ResizeColumnWidth(); } int number = lbColumns.Items.Count + 1; string key = string.Format("Column{0}", number); int colIndex = number; while (dicColumns.ContainsKey(key)) { colIndex++; key = string.Format("Column{0}", colIndex); } col.ColumnName = string.Format("Column{0}", colIndex); col.SerialNumber = number; col.Rows = "1"; //col.SpaceRows = "0"; if (number > 1) { int index = number - 1; key = string.Format("Column{0}", index); while (!dicColumns.ContainsKey(key)) { index--; key = string.Format("Column{0}", index); if (index < 0) { return; } } col.Rows = dicColumns[string.Format("Column{0}", index)].Rows; //col.SpaceRows = dicColumns[string.Format("Column{0}", number - 1)].SpaceRows; } col.Visible = true; //if (comboAdvanceProperty.SelectedIndex == 1 && !string.IsNullOrEmpty(txtStep.Text)) //{ // int step = 0; // bool isDigit = int.TryParse(txtStep.Text, out step); // if (isDigit) // { // col.SerialNumber = step * number; // } //} //if (!string.IsNullOrEmpty(col.SpaceRows)) //{ // int step = 0; // bool isDigit = int.TryParse(col.SpaceRows, out step); // if (isDigit) // { // col.SerialNumber = step * number; // } //} //col.ColumnName = col.Name; col.HeaderText = col.ColumnName; col.Width = 5; dicColumns.Add(col.ColumnName, col); lbColumns.DataSource = new BindingSource(dicColumns, null); lbColumns.SelectedIndex = lbColumns.Items.Count - 1; }
private void pgrdColumns_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) { object obj = pgrdColumns.SelectedObject; DetailGridViewTextBoxColumn column = (DetailGridViewTextBoxColumn)obj; int rows = 0; int spaceRows = 0; if (!string.IsNullOrEmpty(column.Rows)) { rows = int.Parse(column.Rows); if (rows <= 0) { rows = 1; } } //if (!string.IsNullOrEmpty(column.SpaceRows)) //{ // spaceRows = int.Parse(column.SpaceRows); // if (spaceRows <= 0) // { // spaceRows = 0; // } //} if (dicColumns == null) { return; } Dictionary <string, DetailGridViewTextBoxColumn> dicTemp = new Dictionary <string, DetailGridViewTextBoxColumn>(); int width = 0; foreach (string key in dicColumns.Keys) { dicColumns[key].Rows = rows.ToString(); //dicColumns[key].SpaceRows = spaceRows.ToString(); width += dicColumns[key].Width; if (e.OldValue != null && e.OldValue.ToString() == key) { dicTemp.Add(dicColumns[key].ColumnName, dicColumns[key]); } else { dicTemp.Add(key, dicColumns[key]); } } if (e.ChangedItem.Label == "名称") { dicColumns = dicTemp; lbColumns.DataSource = new BindingSource(dicColumns, null); } if (width > _totalWidth) { int oldValue = 0; bool isDigit = int.TryParse(e.OldValue.ToString(), out oldValue); if (isDigit) { column.Width = oldValue; } } if (column != null) { bool readOnly = column.AdvanceProperty != (ComboBoxSourceHelper.AdvanceProperty)Enum.Parse(typeof(ComboBoxSourceHelper.AdvanceProperty), "1"); //固定单元格时显示内容选项 PropertyDescriptorCollection props = TypeDescriptor.GetProperties(obj); foreach (PropertyDescriptor pd in props) { if (pd.Name == "SerialStep") { SetPropertyReadOnly(obj, pd.Name, readOnly); } } pgrdColumns.SelectedObject = obj; } }
/// <summary> /// 确认 /// </summary> private void btnConfirm_Click(object sender, EventArgs e) { this.DialogResult = System.Windows.Forms.DialogResult.OK; if (dicColumns.Count == 0) { _dicDetailColumns = null; } else { _dicDetailColumns = new List <DetailGridViewTextBoxColumn>(); } DetailGridViewTextBoxColumn col = new DetailGridViewTextBoxColumn(); int range = 1; //当前要改变宽度的Key string currKey = string.Empty; //已经存在的不为5的宽度 int greaterWidth = 0; //为5的宽度个数 List <string> lstFiveWidth = new List <string>(); foreach (string key in dicColumns.Keys) { if (range == dicColumns.Keys.Count) { currKey = key; } range++; if (dicColumns[key].Width > 5) { greaterWidth += dicColumns[key].Width; } else { lstFiveWidth.Add(key); } } if (lstFiveWidth.Count > 0) { int avgWidht = (_totalWidth - greaterWidth) / lstFiveWidth.Count; int remainder = (_totalWidth - greaterWidth) % lstFiveWidth.Count; range = 0; foreach (string str in lstFiveWidth) { if (range == lstFiveWidth.Count - 1) { dicColumns[str].Width = avgWidht + remainder; } dicColumns[str].Width = avgWidht; range++; } } int allColWidth = GetColumnWidthCount(); int diff = _totalWidth - allColWidth; int avg = 0; int rem = 0; if (diff > 0 && dicColumns.Count > 0) { avg = diff / dicColumns.Count; rem = diff % dicColumns.Count; } int rang = 0; foreach (string key in dicColumns.Keys) { col = new DetailGridViewTextBoxColumn(); col = dicColumns[key]; //col.Name = dicColumns[key].Name; col.SerialNumber = dicColumns[key].SerialNumber; col.Rows = dicColumns[key].Rows; col.Visible = dicColumns[key].Visible; col.ColumnName = dicColumns[key].ColumnName; col.HeaderText = dicColumns[key].HeaderText; if (rang == dicColumns.Count - 1) { col.Width = dicColumns[key].Width + avg + rem; } else { col.Width = dicColumns[key].Width + avg; } _dicDetailColumns.Add(col); rang++; } this.Close(); }
/// <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 }
/// <summary> /// 方法说明:设定明细框列 /// 作 者:jason.tang /// 完成时间:2013-01-05 /// <param name="listColumns">明细列集合</param> /// <param name="gridName">明细Grid名称</param> private void SetDataGridViewColumns(List <DetailGridViewTextBoxColumn> listColumns, string gridName, DataGridView datagridview) { Control[] controls = datagridview.Controls.Find(gridName, false); if (controls.Length == 0 || listColumns == null) { return; } DataGridView dgv = (DataGridView)controls[0]; dgv.Rows.Clear(); dgv.Columns.Clear(); int totalWidth = 0; int totalRows = 1; string tag = string.Empty; foreach (DetailGridViewTextBoxColumn column in listColumns) { //if (column.Tag != null && !string.IsNullOrEmpty(column.Tag.ToString())) //{ // tag = column.Tag.ToString(); //} column.Visible = column.AdvanceProperty != ((ComboBoxSourceHelper.AdvanceProperty)Enum.Parse(typeof(ComboBoxSourceHelper.AdvanceProperty), "3")); dgv.Columns.Add(column); totalWidth += column.Width; } if (totalWidth < dgv.Width) { dgv.Columns[dgv.Columns.Count - 1].Width += dgv.Width - totalWidth; } ////明细列扩展属性Tag //if (!string.IsNullOrEmpty(tag)) //{ // string[] tags = tag.Split(new char[] { ',' }); // totalRows = int.Parse(tags[4]); // for (int i = 1; i < totalRows; i++) // { // dgv.Rows.Add(); // } //} if (listColumns != null && listColumns.Count > 0) { DetailGridViewTextBoxColumn columns = (DetailGridViewTextBoxColumn)listColumns[0]; totalRows = int.Parse(columns.Rows); for (int i = 1; i < totalRows; i++) { dgv.Rows.Add(); } } //总宽度不足,补充到最后一列 int totalHeight = dgv.Height - 20; for (int i = 0; i < totalRows; i++) { dgv.Rows[i].Height = totalHeight / totalRows; if (i == totalRows - 1) { dgv.Rows[i].Height = totalHeight / totalRows + totalHeight % totalRows; } //dgv.Rows[i].DefaultCellStyle.SelectionBackColor = Color.FromArgb(215, 228, 242); } }
/// <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 }