2017-11-13 6 views
0

내가있는 DataGridView를했습니다, 나는 CellEndEdit 이벤트 사용하여 셀 값이 변경되었습니다이 목록에 연결 수집을 변경하려면 :는 DataGridView를 값에서 반사에 의해 속성 값을 설정

var p = wareList[e.RowIndex].GetType().GetProperties()[e.ColumnIndex]; 

object value = dataGreadView[e.ColumnIndex, e.RowIndex].Value; 

p.SetValue(typeof(Ware), Convert.ChangeType(value, p.PropertyType)); 

그러나의를 마지막 줄에 예외가 발생했습니다 System.Reflection.TargetException: "The object does not match the end type."

답변

0

SetValue() 값을 설정하는 객체를 취합니다.

재산이 System.Type에 정의되어 있지 않으므로 System.Type을 전달하면 오류가 발생합니다.

실제로 속성을 가진 개체를 전달해야합니다.

+0

약간 혼란 스럽네요. 예를 들어'Ware.Name' prop가'string' 타입으로되어 있습니다.'p = Ware.Name'이라면'p.PropertyType'과 그것은 내'Ware.Name' prop를위한'string' 타입을 반환 할 것인가요 아니면 안되나요? – NisuSan

+0

@ NisuSan : 그것은 유형이 아닌 인스턴스를 원하는'SetValue'와는 아무런 관련이 없습니다. – SLaks