nivarshn 0 Newbie Poster

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
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.