2019-09-11 更新
1、有时不希望DataGridView显示不要显示的数据 2018-04-04 解决方法 取消DataGridView自动生成列 dataGridView1.AutoGenerateColumns = false;
DataGridView1.Columns[0].Frozen=true;
给正在编辑通过代码直接赋值没反应,解决办法的核心代码如下
11、禁用dataGridview行和列拖动变大 2019-09-11
this.dataGridView1.AllowUserToResizeColumns = false;
this.dataGridView1.AllowUserToResizeRows = false;
1、有时不希望DataGridView显示不要显示的数据 2018-04-04 解决方法 取消DataGridView自动生成列 dataGridView1.AutoGenerateColumns = false;
//增加一个列 DataGridViewColumn c = new DataGridViewColumn(); dgv.Columns.Add(c); //增加行 int i = dgv.Rows.Add(); DataGridViewRow r = dgv.Rows[i]; //r就是你新增的行3、DataGridView固定某列/锁定列 20180409
DataGridView1.Columns[0].Frozen=true;
//原创来自http://www.luofenming.com/show.aspx?id=ART2018012500001 //在dataGridView赋值后再运行这代码 //或者注册事件里面加这个 int rowNumber = 1; foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.IsNewRow) continue; row.HeaderCell.Value = "" + rowNumber; rowNumber = rowNumber + 1; }5、间隔一行,颜色变的不一样 、设置每一列都不允许排序2018-11-27更新
//在dataGridView赋值后再运行这代码 //或者注册事件里面加这个 //间隔一行,颜色变的不一样 for (int i = 1; i < dataGridView1.Rows.Count - 1; i = i + 2) { dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.LightGray; } //设置每一列都不允许排序 for (int i = 0; i < this.dataGridView1.Columns.Count; i++) { this.dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; }
效果如下图
以下是核心代码
/// <summary> ///选中行 光标也移到选中行 /// </summary> /// <param name="dataGridView"></param> /// <param name="index">指定的行号</param> private void DataGridViewMorve(DataGridView dataGridView, int index) { if (dataGridView != null && dataGridView.Rows.Count > index && dataGridView.Rows[0].Cells.Count > 0 && index >= 0) { dataGridView.CurrentCell = dataGridView.Rows[index].Cells[0]; dataGridView.Rows[index].Selected = true; } } int index = 0; //调用方法 下移 private void button1_Click(object sender, EventArgs e) { if (index < dataGridView1.Rows.Count-1) { index++; DataGridViewMorve(dataGridView1, index); } } //调用方法 上移 private void button2_Click(object sender, EventArgs e) { if (index > 0) { index--; DataGridViewMorve(dataGridView1, index); } }
核心代码如下
DataGridViewComboBoxColumn colPortName = (DataGridViewComboBoxColumn)dataGridView1.Columns["Column1"]; string[] serialName = new string[] { "aaa1", "bbb2", "ccc3" }; colPortName.DataSource = serialName;
给正在编辑通过代码直接赋值没反应,解决办法的核心代码如下
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {//有时想把回车功能换掉其它换行 也可以做到,如不知道keys对应的值可以仿真查看 if (keyData == Keys.Oemplus)//当输入 = 时赋值 { dataGridView1.CurrentCell.ReadOnly = true; dataGridView1.CurrentCell.Value = "333";//给当前的DataGridViewCell赋值 dataGridView1.CurrentCell.ReadOnly = false; return true; } return false; }
DataGridViewRow row = new DataGridViewRow(); DataGridViewTextBoxCell textboxcell = new DataGridViewTextBoxCell(); textboxcell.Value = ""; row.Cells.Add(textboxcell); dataGridView1.Rows.Add(row);
DataTable tempTable = (DataTable)dataGridView1.DataSource; tempTable.Rows.Add("1111");//如果第一列是DataGridViewComboBoxCell时并且绑定了数据时 一定要是Items里面的一项 DataTable d2 = tempTable.Clone(); dataGridView1.DataSource = d2; foreach (DataRow dr in tempTable.Rows) { d2.Rows.Add(dr.ItemArray); } dataGridView1.DataSource = d2; dataGridView1.CurrentCell = dataGridView1.Rows[rowIndex + 1].Cells[0];//当前行为最后一行的第一列
11、禁用dataGridview行和列拖动变大 2019-09-11
this.dataGridView1.AllowUserToResizeColumns = false;
this.dataGridView1.AllowUserToResizeRows = false;