NewRowNeeded事件当 VirtualMode 属性为 true 时,将在用户定位到 DataGridView 底部的新行时发生,适合给新行建立一些默认数据和按规则应该产生的数据,但此时不推荐添加新数据到后台数据表中。因为用户操作有太多的变数,可以把产生的默认值直接赋值给一个临时初始数据对像即可,在用户触发UserAddedRow事件后,再赋值到后台数据也不迟

  1. Private pInitData As OuterExtendItem
  2. Private Sub xDataGridView_NewRowNeeded(sender As Object, e As System.Windows.Forms.DataGridViewRowEventArgs) Handles xDataGridView.NewRowNeeded
  3. If (mHalt) Then
  4. Return
  5. End If
  6. pInitData = New OuterExtendItem()
  7. pInitData.mTitle = ""
  8. pInitData.mValue = ""
  9. End Sub





UserAddedRow事件是在编辑新行时触发,此时适合添加数据到后台数据表中
如例:

  1. Private Sub xDataGridView_UserAddedRow(sender As Object, e As System.Windows.Forms.DataGridViewRowEventArgs) Handles xDataGridView.UserAddedRow
  2. If (mHalt) Then
  3. Return
  4. End If
  5. If (_ExtendList Is Nothing) Then
  6. Return
  7. End If
  8. If (pInitData IsNot Nothing) Then
  9. _ExtendList.addNotEvent(pInitData)
  10. pInitData = Nothing
  11. End If
  12. End Sub

//参考的数据显示代码:
  1. Private Sub xDataGridView_CellValueNeeded(sender As Object, e As System.Windows.Forms.DataGridViewCellValueEventArgs) Handles xDataGridView.CellValueNeeded
  2. If (mHalt) Then
  3. Return
  4. End If
  5. If (e.RowIndex < 0 OrElse e.RowIndex > _ExtendList.Count) Then
  6. Return
  7. End If
  8. If (e.RowIndex = _ExtendList.Count AndAlso pInitData IsNot Nothing) Then
  9. '显示新行的代码
  10. Select Case e.ColumnIndex
  11. Case xColumnTitle.Index
  12. e.Value = pInitData.mTitle
  13. Case xColumnValue.Index
  14. e.Value = pInitData.mValue
  15. End Select
  16. Else
  17. With _ExtendList
  18. Select Case e.ColumnIndex
  19. Case xColumnTitle.Index
  20. e.Value = .Item(e.RowIndex).mTitle
  21. Case xColumnValue.Index
  22. e.Value = .Item(e.RowIndex).mValue
  23. End Select
  24. End With
  25. End If
  26. End Sub


  1. Private Sub xDataGridView_CellValuePushed(sender As Object, e As System.Windows.Forms.DataGridViewCellValueEventArgs) Handles xDataGridView.CellValuePushed
  2. If (mHalt) Then
  3. Return
  4. End If
  5. If (e.RowIndex < 0 OrElse e.RowIndex >= _ExtendList.Count) Then
  6. Return
  7. End If
  8. With _ExtendList(e.RowIndex)
  9. Try
  10. Select Case e.ColumnIndex
  11. Case xColumnTitle.Index
  12. .mTitle = e.Value
  13. Case xColumnValue.Index
  14. .mValue = e.Value
  15. End Select
  16. .raiseValueChangedEvent(_ExtendList, EventArgs.Empty) //触发列表变化事件
  17. Catch exp As Exception
  18. MyHub.mBase.mDebugLog.writerError(Me, exp)
  19. Finally
  20. End Try
  21. End With
  22. End Sub
  1.   '列表变化事件,此处只要根据实际数据,设置行数即可
  2. Private Sub listChanged(sender As Object, ByVal e As DBListChangedEventArgs(Of OuterExtendItem))
  3. If (Me.InvokeRequired) Then
  4. Me.BeginInvoke(New EventHandler(Of DBListChangedEventArgs(Of OuterExtendItem))(AddressOf listChanged), New Object() {sender, e})
  5. Else
  6. xDataGridView.RowCount = _ExtendList.Count + 1 //行数+1行
  7. xDataGridView.Refresh()
  8. End If
  9. End Sub
RowsAdded事件,此事件是指在表格增加新行时触发,在初始化数据增加新行和后期编辑增加新行时都会触发此事件,而UserAddedRow事件一般是指在编辑阶段由用户操作触发的增加新行事件,二者有所区别,UserAddedRow事件使用率会比较高一点,RowsAdded事件适用于产生一些根据绑定数据需要额外显示的信息时。

NewRowNeeded和UserAddedRow事件以及RowsAdded的区别使用的更多相关文章

  1. html5与js关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的value点击全选状态onclick="select();"。做购物车页面时会要用到。

    关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的点击全选状态onclick="s ...

  2. 总结oninput、onchange与onpropertychange事件的用法和区别 书写搜索的神奇代码

    总结oninput.onchange与onpropertychange事件的用法和区别 最近手机开发一个模糊搜索的功能组建,在网上就找到这篇文章! 前端页面开发的很多情况下都需要实时监听文本框输入,比 ...

  3. C#事件与委托的区别

    C#事件与委托的区别 1. 委托 事件是利用委托来定义的,因此先解释委托.委托是一个类,它与其他类如int,string等没有本质区别,int代表的是所有的整形,而string代表的是字符串,委托则代 ...

  4. JavaScript之onXXXX事件和addEventListener的区别

    JavaScript之onXXXX事件和addEventListener的区别 1.首先介绍两者的用法: 1.1onXXXX的用法:以onclick为例 第一种: obj.onclick = func ...

  5. JavaScript事件onblur与onfocus区别

    一.onblur 1.1 说明 onblur属性在元素失去焦点时触发,onblur常用于表单验证代码(例如用户离开表单字段). 1.2 示例 <input type="text&quo ...

  6. 在元素上写事件和addEventListent()的区别

    在元素上写事件和addEventListent()的区别1. onclick添加事件不能绑定多个事件,后面绑定的会覆盖前面的.而addEventListener能添加多个事件绑定,按顺序执行.2. a ...

  7. 总结oninput、onchange与onpropertychange事件的用法和区别,onchange

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...

  8. Qt事件和信号的区别 .

    仔细来看,事件与信号其实并无多大差别,从我们对其需求上来说,都只要能注册事件或信号响应函数,在事件或信号产生时能够被通知到即可.但有一项区别在于,事件处理函数的返回值是有意义的,我们要根据这个返回值来 ...

  9. 实时监听文本框输入 oninput、onchange与onpropertychange事件的用法和区别

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...

随机推荐

  1. (经常看看)jdk 设计模式

    在JDK(Java Development Kit)类库中,开发人员使用了大量设计模式,正因为如此,我们可以在不修改JDK源码的前提下开发出自己的应用软件,本文列出了部分JDK中的模式应用实例,有兴趣 ...

  2. 用Objective-C的Category特性添加类的属性

    http://www.cnblogs.com/wupher/archive/2013/01/05/2845338.html Category是Objective-C中常用的语法特性,通过它可以很方便的 ...

  3. 最详细的JavaScript和事件解读

    与浏览器进行交互的时候浏览器就会触发各种事件.比如当我们打开某一个网页的时候,浏览器加载完成了这个网页,就会触发一个 load 事件:当我们点击页面中的某一个“地方”,浏览器就会在那个“地方”触发一个 ...

  4. The Fortified Forest - POJ 1873(状态枚举+求凸包周长)

    题目大意:有个国王他有一片森林,现在他想从这个森林里面砍伐一些树木做成篱笆把剩下的树木围起来,已知每个树都有不同的价值还有高度,求出来砍掉那些树可以做成篱笆把剩余的树都围起来,要使砍伐的树木的价值最小 ...

  5. hdoj 1384 Intervals

    Intervals Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. [置顶] SpecDD系列:“完成” 的定义

    在当今充满变数和快节奏的大环境下,一个产品的上市时间已经成为产品成功与否的重要因素.如果对于“完成”没有一个清晰的定义,那么很可能会遭遇产品延期,风险,并且增加公司成本. “完成的定义”也被俗称为Do ...

  7. TOMCAT启动完成但是ECLIPSE仍然显示starting....

    最近重新部署了一个TOMCAT服务,但是启动碰到个问题,虽然TOMCAT控制台已显示启动成功,但是ECLIPSE右下角仍然一直显示STARTING,最后TOMCAT超时,启动失败. 之前以为是拷贝工程 ...

  8. Python安装scipy

    1.下载numpy+mkl 下载链接:http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 2.下载scipy 下载链接:http://www.lfd.uc ...

  9. android 回车键事件编程

    实现android按下回车键便隐藏输入键盘,有两种方法: 1.)如果布局是多个EditText,为每个EditText控件设置android:singleLine=”true”,弹出的软盘输入法中回车 ...

  10. iOS 自动布局总结

    参考自以下文章: http://blog.csdn.net/ysy441088327/article/details/12558097 http://blog.csdn.net/zhouleizhao ...