BindingNavigator
을 통해 새 항목을 추가 할 때 새 항목의 여러 필드에 이전에 선택한 항목의 값을 어떻게 채울 수 있습니까?BindingNavigator AddNewItem에 복사
참고 : BindingNavigatorAddNewItem.Click
에 BindingNavigator
에는 새 항목이 이미로드되어 있고 컨트롤이 기본값으로 지워집니다.
BindingNavigator
을 통해 새 항목을 추가 할 때 새 항목의 여러 필드에 이전에 선택한 항목의 값을 어떻게 채울 수 있습니까?BindingNavigator AddNewItem에 복사
참고 : BindingNavigatorAddNewItem.Click
에 BindingNavigator
에는 새 항목이 이미로드되어 있고 컨트롤이 기본값으로 지워집니다.
BindingNavigator
은 데이터 소스에 바인딩되어야합니다. 예를 들어, DataGridView
과 같은 것을 공유하려면 BindingSource
을 사용해야합니다. 따라서 실제로 추가 된 항목은 내재 된 BindingSource.DataSource
에 추가됩니다.
두 가지 방법으로 문제를 해결할 수 있습니다.
모두 DataGridView
및 BindingNavigator
바인딩, 당신은 BindingNavigator.AddNewItem
버튼을 클릭하더라도, BindingSource.AddNew()
만든 방법과 새로 추가 된 항목의 위치에 대한 CurrencyManager
업데이트 변경의 위치에 대한 호출은, 그렇게하여 BindingSource.Current
속성을 하는가하면 새로 추가 된 객체의 인스턴스를 반환하거나 그렇지 않으면 BindingSource.CurrencyManager.Current
이 동일한 작업을 수행합니다.
1 - 당신의 값을 할당의
BindingSource.Current
유형이 BindingSource.Current
개체를 캐스팅 사용하여 작업을 완료!
2 - 당신이
BindingSource.AddignNewEventArgs
를 통해 인스턴스에 액세스하고, 캐스팅 입력합니다AddignNewEventArgs.NewObject
속성을 사용하여에 자신의 기본값을 할당 할 수있다, 이렇게함으로써,BindingSource.AddingNew
이벤트
구독 그것.
'InvalidCastException' 결과는 다음과 같습니다 :'SomeDataSet.HelloWorldRow newRow (SomeDataSet.HelloWorldRow) HelloWorldBindingSource.Current;' – Steven
이것은 올바른 대답 인 것 같습니다 ('BindingSource.AddingNew' 이벤트). 그러나'AddingNewEventArgs.NewObject'를 올바른 유형으로 채울 수 없습니다. 그 문제에 대한 별도의 질문을 만들었습니다 : http://stackoverflow.com/questions/23378421/customize-stronglytyped-bindingsource-item-addition – Steven