2014-04-30 4 views
0

BindingNavigator을 통해 새 항목을 추가 할 때 새 항목의 여러 필드에 이전에 선택한 항목의 값을 어떻게 채울 수 있습니까?BindingNavigator AddNewItem에 복사

참고 : BindingNavigatorAddNewItem.ClickBindingNavigator에는 새 항목이 이미로드되어 있고 컨트롤이 기본값으로 지워집니다.

답변

2

BindingNavigator은 데이터 소스에 바인딩되어야합니다. 예를 들어, DataGridView과 같은 것을 공유하려면 BindingSource을 사용해야합니다. 따라서 실제로 추가 된 항목은 내재 된 BindingSource.DataSource에 추가됩니다.

두 가지 방법으로 문제를 해결할 수 있습니다.

모두 DataGridViewBindingNavigator 바인딩, 당신은 BindingNavigator.AddNewItem 버튼을 클릭하더라도, BindingSource.AddNew() 만든 방법과 새로 추가 된 항목의 위치에 대한 CurrencyManager 업데이트 변경의 위치에 대한 호출은, 그렇게하여 BindingSource.Current 속성을 하는가하면 새로 추가 된 객체의 인스턴스를 반환하거나 그렇지 않으면 BindingSource.CurrencyManager.Current이 동일한 작업을 수행합니다.

1 - 당신의 값을 할당의 BindingSource.Current

유형이 BindingSource.Current 개체를 캐스팅 사용하여 작업을 완료!

2 - 당신이 BindingSource.AddignNewEventArgs를 통해 인스턴스에 액세스하고, 캐스팅 입력합니다 AddignNewEventArgs.NewObject 속성을 사용하여에 자신의 기본값을 할당 할 수있다, 이렇게함으로써, BindingSource.AddingNew 이벤트

구독 그것.

+0

'InvalidCastException' 결과는 다음과 같습니다 :'SomeDataSet.HelloWorldRow newRow (SomeDataSet.HelloWorldRow) HelloWorldBindingSource.Current;' – Steven

+0

이것은 올바른 대답 인 것 같습니다 ('BindingSource.AddingNew' 이벤트). 그러나'AddingNewEventArgs.NewObject'를 올바른 유형으로 채울 수 없습니다. 그 문제에 대한 별도의 질문을 만들었습니다 : http://stackoverflow.com/questions/23378421/customize-stronglytyped-bindingsource-item-addition – Steven