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;