Datagrid's scrolling giving error after selecting row


New member
Jan 3, 2012
Programming Experience
When I am scrolling datagrid after selecting one row I am getting error as "An unhandled exception of type 'System.StackOverflowException' occurred in System.Windows.Forms.dll" on line : MyBase.Edit(source, rowNum, bounds, [readOnly], instantText, cellIsVisible)

Whole code is given below :

' Hosts a TextBox control in a cell of a DataGridColumnStyle for editing strings.
' Note:
' Adds the ability to change the color of an individual cell. As each row in the column is
' painted an event is fired that allows the setting of the new color.

' Added returning the cell value when it's being painted. Also if the row is selected the
' selection colors will be used.

' Additional namespaces.
Imports System.Windows.Forms
Imports System.Drawing

Public Class FormatableCellDataGridTextBoxColumn

' Base class.
Inherits DataGridTextBoxColumn

' Delegates.
Public Delegate Sub PaintingCellEventHandler( _
ByVal sender As Object, _
ByVal e As PaintingCellEventArgs)
Public Delegate Sub EditingCellEventHandler( _
ByVal sender As Object, _
ByVal e As EditingCellEventArgs)

' Events.
Public Event PaintingCell As PaintingCellEventHandler
Public Event EditingCell As EditingCellEventHandler

' Instance variables.
Private _columnNum As Integer

Public Sub New(ByVal columnNum As Integer)

' Initialize instance variables.
_columnNum = columnNum

End Sub

Protected Overloads Overrides Sub Paint( _
ByVal g As System.Drawing.Graphics, _
ByVal bounds As System.Drawing.Rectangle, _
ByVal source As System.Windows.Forms.CurrencyManager, _
ByVal rowNum As Integer, _
ByVal backBrush As System.Drawing.Brush, _
ByVal foreBrush As System.Drawing.Brush, _
ByVal alignToRight As Boolean)

' Local variables.
Dim foreColor As Color
Dim backColor As Color
Dim rowIsSelected As Boolean = False
Dim text As String = NullText
Dim value As Object = GetColumnValueAtRow(source, rowNum)
Dim arg As PaintingCellEventArgs

' Determine if the row is selected.
If TypeOf foreBrush Is SolidBrush AndAlso TypeOf backBrush Is SolidBrush Then
foreColor = DirectCast(foreBrush, SolidBrush).Color
backColor = DirectCast(backBrush, SolidBrush).Color
If _
foreColor.Equals(DataGridTableStyle.SelectionForeColor) AndAlso _
backColor.Equals(DataGridTableStyle.SelectionBackColor) Then
rowIsSelected = True
End If
End If

' Retrieve brushes.
If Not IsDBNull(value) Then text = value.ToString()
arg = New PaintingCellEventArgs( _
rowNum, _
_columnNum, _
text, _
backBrush, _
If Not rowIsSelected Then RaiseEvent PaintingCell(Me, arg)

' Paint the cell.
MyBase.Paint(g, bounds, source, rowNum, arg.BackBrush, arg.ForeBrush, alignToRight)

End Sub

Protected Overloads Overrides Sub Edit( _
ByVal source As System.Windows.Forms.CurrencyManager, _
ByVal rowNum As Integer, _
ByVal bounds As System.Drawing.Rectangle, _
ByVal [readOnly] As Boolean, _
ByVal instantText As String, _
ByVal cellIsVisible As Boolean)

' Local variables.
Dim editBoxIsToBeHidden As Boolean = False
Dim e As New EditingCellEventArgs(rowNum, _columnNum, editBoxIsToBeHidden)

' Retrieve edit instructions.
RaiseEvent EditingCell(Me, e)

' Allow the call to progress normally.

MyBase.Edit( _
source, _
rowNum, _
bounds, _
[readOnly], _
instantText, _

' Hide the edit box.
If e.EditBoxIsToBeHidden Then
End If

End Sub

End Class


  • Win7.JPG
    17.5 KB · Views: 21
Top Bottom