DataGridview에 포함 된 DataGridviewComBobox (드롭 다운 메뉴) 컨트롤에서 새 값을 선택할 때 예외가 발생합니다. 콤보 상자는 내 클래스의 인스턴스로 채워지는 BindingSource로 채워집니다. 메뉴에 옵션을 올바르게 표시 할 수 있지만 포커스를 새 컨트롤로 변경하면 예외가 발생합니다. System.String에서 myclass 로의 잘못된 캐스트가 발생합니다. 스택 추적 (임은 그 단어 권리를 사용하는 경우) 죄송합니다 (소스가C# Winforms DatagridviewCombobox 예외 문자열을 클래스로 변환 할 수 없습니다.
System.Windows.Forms.DataGridView.PushFormattedValue 이 System.Convert.DefaultToType 더 명시 적 설명은 다음과 같습니다
에 아래로 계단식 된 표시 너무 길지만 재현 가능하게 만들고 싶었습니다.) : 아무 속성도없는 점유 클래스라는 비어있는 클래스가 있습니다. (Occupant에도 Name 속성이 있기 때문에 문제가 있습니다.) OccupantSource라는 BindingSource가 있는데, DataSource가 Occupant를 가리키고 있습니다.
또한 Driver라는 하나의 Occupant 속성이있는 Car라는 클래스가 있습니다.
내 Form_Load()에서 OccupantSource.AddNew()를 두 번 호출하고 CarSource.AddNew()를 한 번 호출합니다.
DataSource (CarSource로 구성된 BindingSource)의 DataSource 인 DataGridView 컨트롤이 있습니다. DGV에는 CarSource에서 자동차의 Driver 속성을 표시하는 하나의 열이 있습니다. DataPropertyName이 driver로 설정된 DataGridViewComboBoxColumn입니다.
그래서 내가 원하는 것은 Datagridview에서 자동차 행을 표시하는 것입니다. 열 중 하나가 콤보 상자가되어 드롭 다운을 선택하고 기존의 Occupant 인스턴스에서 드라이버를 선택할 수 있습니다. 그러나 나는 예외를 얻는다.
내가 오해 한 것입니까? 클래스의 인스턴스를 사용하여 DataGridViewComboBox를 채울 수 있습니까?
선택한 항목이 될 수 있습니다/현재 항목이 콤보 박스에서 표시되지만 개체가 내부적으로 문자열 일 수 있습니다. 초점을 맞추지 못하면 내부적으로 변환하려고하는 커밋 이벤트가 호출됩니다. – Zenwalker
귀하가받는 Exception.Message 란 무엇입니까? – MoonKnight
CarSource라는 BindingSource가 있고 DGV의 ComboBoxBolumn의 데이터 소스가 OccupantSource로 설정되었습니다. 프로젝트에 문자열이 없으며 예외 메시지는 다음과 같습니다. http://img508.imageshack.us/img508/2586/unledbfv.jpg – Moz