Gr中可edit ,这样中必然会出现所有可见列都为空值的,我想在某行失去焦点时,进行判断,如空则删除,用dataGridView1_RowLeave事件,但出错信息为:不能在此事件中执行操作。高手请教,该怎做?private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
{
bool flag = true;
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
if (dataGridView1.Rows[e.RowIndex].Cells[i].Value.ToString ().Trim ()=="")
flag = true;
else { flag = false;
break;
} }
if (flag&&(e.RowIndex!=this.dataGridView1.Rows.Count-1 ))//最后一行,不删
{ try
{
this.dataGridView1.Rows.Remove(this.dataGridView1.Rows[e.RowIndex]);//有问题
//this.dataGridView1.Rows.RemoveAt(e.RowIndex);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString()+"kkk"+e.RowIndex.ToString ());
} }
}
{
bool flag = true;
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
if (dataGridView1.Rows[e.RowIndex].Cells[i].Value.ToString ().Trim ()=="")
flag = true;
else { flag = false;
break;
} }
if (flag&&(e.RowIndex!=this.dataGridView1.Rows.Count-1 ))//最后一行,不删
{ try
{
this.dataGridView1.Rows.Remove(this.dataGridView1.Rows[e.RowIndex]);//有问题
//this.dataGridView1.Rows.RemoveAt(e.RowIndex);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString()+"kkk"+e.RowIndex.ToString ());
} }
}
解决方案 »
- C#项目不显示解决方案了,怎样弄出来
- 求类似QQ的文本框
- HttpWebRequest 异步请求,为什么返回不正常呢。
- 高分!线程问题!
- 怎样在C#中让lable来回动?
- 在线的朋友帮帮忙!
- 程序开始时候文件夹中有m个文件,结束以后有m+1个,如何获取这增加的一个文件的全路径。
- 请问知道怎么样吧CSGL的画布放在tag里面?
- 如果我在form中创造了一个 Thread 并且运行了, 假设我不调用abort()并且这个 Thread 是个endless的循环, 当我关闭窗口的时候,会造成
- Datagridview复选框列
- 更新数据库,如何跳过错误的更新
- winform中,如何做一个软件的试用版?
DataTable dt;
private void Form1_Load(object sender, EventArgs e)
{
dt = new DataTable();
dt.Columns.Add(new DataColumn("id"));
dt.Columns.Add(new DataColumn("name")); DataRow dr = null;
dr = dt.NewRow();
dr["id"] = "001";
dr["name"] = "Name1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["id"] = "002";
dr["name"] = "Name2";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["id"] = "001";
dr["name"] = "Name1";
dt.Rows.Add(dr); //dt.TableNewRow += new DataTableNewRowEventHandler(dt_NewTableRow);
dataGridView1.DataSource = dt;
}
bool flag = true;
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
{
if (flag == false)
dt.Rows.RemoveAt(e.RowIndex);
flag = false; }
如改成
bool flag = true;
private void dataGridView1_RowLeave_1(object sender, DataGridViewCellEventArgs e)
{
for(int i=0;i<dt.Columns.Count ;i++)
{
if (dt.Rows[e.RowIndex][i].ToString() == "")
flag = true;
else
{
flag = false; break;
}
} if (flag)
dt.Rows.RemoveAt(e.RowIndex);
}=====================
出现错误如下
1 每次清空一行,失去焦点,不能马上删除,当它再次获得焦点,失去时,才删除
2 不能在最后一行空白行,写入数据,每次写入的数据是不可能马上放到dt里的吧,我的本意是,不管后添加的,还是原来的,只要一清空,DataGridView 里不能有空行,dt的数据另外处理