none
关于WinForm中DataGridView控件使用的问题一,求教!······ RRS feed

  • 问题

  • 在WinForm中使用DataGridView控件,因为它在默认显示的时候是有一条多加的行的。
    如果我 添加了一条数据,
    这个时候我统计DataGridView中所有的行,这个时候,它显示其共有2行,但是我只是添加了一条数据。

    这个时候我想要正确统计,应该如怎么做。(假如多条)或者思路

    第二,使用DataGridView的CellValueChanged事件,假如我在其事件里写一个MessageBox.Show("fasdfsa");
    假如有4列,在默认加载窗口的时候就会弹出4次提示框,这个又应该怎么解决?有什么思路。


    求教。谢谢!······
    2010年1月3日 15:27

答案

  • 你把  this.dataGridView1.AllowUserToAddRows = false;
    在你添加时就不会产生新行了


    你判断下当前DATAGRIDVIEW中的选择行,是否为标题行
     if (e.RowIndex == -1)
                {
                               }


    努力+方法=成功
    • 已标记为答案 天驰 2010年1月4日 3:09
    2010年1月4日 1:30
  • 1 禁用添加新行 AllowUserToAddRows = false
    2 在数据加载完之后再注册 CellValueChanged 事件,只需判断哪一列可以使用事件参数的 e.ColumnIndex。

    知识改变命运,奋斗成就人生!
    • 已标记为答案 天驰 2010年1月4日 3:09
    2010年1月4日 1:32
    版主
  • 那一列是添加数据的那一列,如果你不需要添加这行 可以设置DataGridView的AllowUserToAddRows=false

    对于第二个问题是标题行

     private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex == -1)//判断是否是标题行
                {
                    return;
                }
                MessageBox.Show("hahaha");
            }

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    • 已标记为答案 天驰 2010年1月4日 3:09
    2010年1月4日 1:46
    版主
  • 那个只是控制在界面上是否显示新建行  你依然是可以在代码中添加行的

    或者你将获得行数减去1就是真正的行数了
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    • 已标记为答案 天驰 2010年1月4日 3:09
    2010年1月4日 2:26
    版主

全部回复

  • 你把  this.dataGridView1.AllowUserToAddRows = false;
    在你添加时就不会产生新行了


    你判断下当前DATAGRIDVIEW中的选择行,是否为标题行
     if (e.RowIndex == -1)
                {
                               }


    努力+方法=成功
    • 已标记为答案 天驰 2010年1月4日 3:09
    2010年1月4日 1:30
  • 1 禁用添加新行 AllowUserToAddRows = false
    2 在数据加载完之后再注册 CellValueChanged 事件,只需判断哪一列可以使用事件参数的 e.ColumnIndex。

    知识改变命运,奋斗成就人生!
    • 已标记为答案 天驰 2010年1月4日 3:09
    2010年1月4日 1:32
    版主
  • 那一列是添加数据的那一列,如果你不需要添加这行 可以设置DataGridView的AllowUserToAddRows=false

    对于第二个问题是标题行

     private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex == -1)//判断是否是标题行
                {
                    return;
                }
                MessageBox.Show("hahaha");
            }

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    • 已标记为答案 天驰 2010年1月4日 3:09
    2010年1月4日 1:46
    版主
  • 第二个问题,Raymond Tang已经帮忙解决了,


    现在是第一个问题,我这里不能禁用AllowUserToAddRows,因为有些数据必须是手动再DataGridView上手动添加修改的。
    但是我只是想获得我已经添加的数据,

    如果已经添加了多条记录而没有禁用AllowUserToAddRows,DataGrrdView的Rows.Count的值会多算一条。
    我想获得正确,怎么获取,前提条件,不能禁用AllowUserToAddRows


    求教,谢谢

    2010年1月4日 2:14
  • 那个只是控制在界面上是否显示新建行  你依然是可以在代码中添加行的

    或者你将获得行数减去1就是真正的行数了
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    • 已标记为答案 天驰 2010年1月4日 3:09
    2010年1月4日 2:26
    版主
  • 在界面是是否显示新建行,这个必须存在,使用。谢谢

    2010年1月4日 3:09