2011-03-28 6 views
0

DataTable에 바인딩 된 DataGridView가 있습니다. AutoGenerateColumns = true를 사용하고 있었지만 열을 직접 관리 할 수 ​​있도록 false로 변경 한 다음 DataGridView.CurrentCellDirtyStateChanged의 이벤트 처리기에서 InvalidProgramException을 받기 시작했습니다. 이 이벤트 처리기가 CheckFilter()라는 다른 메서드를 호출하면 예외가 throw됩니다. 메서드를 호출 할 때 예외가 발생하도록 코드를 단계별로 실행할 때 메서드에 입력되지 않습니다. CheckFilter()는 매개 변수가없는 개인 하위입니다. 예외 메시지는 "공용 언어 런타임에서 유효하지 않은 프로그램을 발견했습니다"입니다. Windows 7에서 .net 2.0 및 Visual Studio 2008과 함께 vb.net을 사용하고 있습니다.DataGridView.CurrentCellDirtyStateChanged 메서드를 호출 할 때 InvalidProgramException이 throw됩니다.

답변

0

예외를 메서드에서 호출 한 것이 아니라 메서드 내부의 각 루프에서 발생한 것으로 나타났습니다. 루프 변수의 유형을 지정하지 않았습니다. for each 루프는 datarows 콜렉션을 통해 루프하므로 DataGridViewRow 루프 변수를 만든 다음 예외가 사라졌습니다. 프레임 워크 나 컴파일러의 버그 일 것 같아요.

관련 문제