2014-06-24 1 views
2

CellFormatting 처리기를 프로젝트에 추가하려고합니다. CellFormatting 처리기에서 모든 오류를 해결 한 것 같지만 내 RowsAdded은 알아낼 수없는 오류가 있습니다. 의 '를 rowCount' '공공 하위 뉴 (정수로 rowIndex에 정수로, rowCount의)'매개 변수에 지정되지DataGridViewRowsAdded 핸들러에서 오류가 발생합니다.

인수는

는 '정수'

'AddressOf를'표현은 '정수'로 변환 할 수 있습니다 때문에 아닌 대리자 형식

내 코드 :

Private Sub InitializeDataGridView() 
    Try 
     ' Set up the DataGridView. 
     With Me.DataGridView1 
      ' Automatically generate the DataGridView columns. 
      .AutoGenerateColumns = True 

      ' Set up the data source. 
      .DataSource = dt 

      ' Automatically resize the visible rows. 
      .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders 

      ' Set the DataGridView control's border. 
      .BorderStyle = BorderStyle.Fixed3D 

      ' Put the cells in edit mode when user enters them. 
      .EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2 

      ' Disables Add New Row 
      .AllowUserToAddRows = False 

      '.AllowUserToOrderColumns = False 
      For Each column As DataGridViewColumn In DataGridView1.Columns 
       column.SortMode = _ 
       DataGridViewColumnSortMode.Programmatic 
      Next 

      AddHandler Me.DataGridView1.CellFormatting, New DataGridViewCellFormattingEventHandler(AddressOf OnCellFormatting) 
      AddHandler Me.DataGridView1.RowsAdded, New DataGridViewRowsAddedEventArgs(AddressOf OnRowsAdded) 

     End With 

    Catch ex As SqlException 
     MessageBox.Show(ex.ToString, _ 
      "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 
     System.Threading.Thread.CurrentThread.Abort() 
    End Try 
End Sub 

그리고

Private Sub OnCellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting 
    'If e.ColumnIndex = DataGridView1.Columns("Contact").Index Then 
    ' e.FormattingApplied = True 
    ' Dim row As DataGridViewRow = DataGridView1.Rows(e.RowIndex) 
    ' e.Value = String.Format("{0} : {1}", row.Cells("ContactName").Value, row.Cells("Phone").Value) 
    'End If 
End Sub 
Private Sub OnRowsAdded(ByVal sender As Object, ByVal e As DataGridViewRowsAddedEventArgs) Handles DataGridView1.RowsAdded 
    'For i As Integer = 0 To e.RowIndex - 1 
    ' Dim row As DataGridViewRow = DataGridView1.Rows(e.RowIndex + i) 
    ' row.Cells("Contact").Value = String.Format("{0} : {1}", row.Cells("ContactName").Value, row.Cells("Phone").Value) 
    'Next 
End Sub 

오류에 관해서라면, 나는 어디에서나 rowCount를 사용하지 않을 것입니다.

정수를 대리자 형식으로 사용한다고 생각하는 이유는 무엇입니까?

체크해 봤지만 public 변수 rowCount 또는 rowIndex가 없습니다.


대답에 따라 내 오류를 수정하는 것으로 보이는 Sub InitializeDataGridView()에서 두 줄을 삭제했습니다. 그러나 대답은 Args가 Handler 여야한다고 명시합니다. 그래서 Private Sub OnRowsAdded를

으로 변경했습니다.

어떤 오류가 발생 했나요? 왜 그것이 오류를 일으키는가?

답변

2

InitializeDataGridView 방법에 하나의 오타 있습니다 :

AddHandler Me.DataGridView1.RowsAdded, New DataGridViewRowsAddedEventArgs(AddressOf OnRowsAdded) 

가되어야한다

AddHandler Me.DataGridView1.RowsAdded, New DataGridViewRowsAddedEventHandler(AddressOf OnRowsAdded) 
                     ^^^^^^ 

또한, 이벤트 핸들러가 이미 말에 Handles DataGridView1.RowsAddedHandles DataGridView1.CellFormatting를 통해 연결되어 귀하의 OnRowAddedOnCellFormatting 방법이므로 을 첨부 할 필요가 없습니다. 이벤트 핸들러 a를 첨부하십시오. 두번째.

AddHandler Me.DataGridView1.CellFormatting, New DataGridViewCellFormattingEventHandler(AddressOf OnCellFormatting) 
AddHandler Me.DataGridView1.RowsAdded, New DataGridViewRowsAddedEventHandler(AddressOf OnRowsAdded) 
+0

나는 두 불필요한 행을 삭제하고이를 수정되었습니다 :이 두 줄을 마지막으로 불필요 ( 정정)! 사적인 subrowsadded는 여전히 Handler 대신에 Args를 필요로하거나 더 많은 에러가 발생합니다. 설명 할 수 있습니까? – ZL1Corvette

+0

@ ZL1Corvette 내가 당신의 질문을 이해하지 않는 한, 대답은 내 대답의 첫 부분에 있습니다 (Typo Args 대 Handler). – Chris

+0

Sub OnRowAdded에서 Args를 Handler로 변경하고 오류가 발생했습니다. 원본 게시물의 세부 정보. – ZL1Corvette