방법: Windows Forms BindingNavigator 컨트롤에 로드, 저장 및 취소 단추 추가
BindingNavigator 컨트롤은 데이터에 바인딩된 컨트롤을 폼에서 탐색하고 조작하기 위한 특수 용도의 ToolStrip 컨트롤입니다.
이 컨트롤은 ToolStrip 컨트롤이므로 BindingNavigator 구성 요소를 간단하게 수정하여 구성 요소에 사용자를 위한 추가 명령이나 대체 명령을 포함할 수 있습니다.
다음 절차에서는 TextBox 컨트롤을 데이터에 바인딩하고 폼에 추가된 ToolStrip 컨트롤에 로드, 저장 및 취소 단추가 포함되도록 수정할 수 있습니다.
BindingNavigator 구성 요소에 로드, 저장 및 취소 단추를 추가하려면
폼에 TextBox 컨트롤을 추가합니다.
데이터 소스에 바인딩되는 BindingSource에 컨트롤을 바인딩합니다. 이 예제에서는 BindingSource가 데이터베이스에 바인딩됩니다.
데이터 집합 및 테이블 어댑터를 생성한 다음 BindingNavigator 컨트롤을 폼으로 끌어 옵니다.
BindingNavigator 컨트롤의 BindingSource 속성을 컨트롤에 바인딩된 폼의 BindingSource로 설정합니다.
BindingNavigator 컨트롤을 선택합니다.
스마트 태그 문자 모양()를 클릭하여 BindingNavigator 작업 대화 상자를 표시하고 항목 편집을 선택합니다.
항목 컬렉션 편집기가 나타납니다.
항목 컬렉션 편집기에서 다음을 수행합니다.
ToolStripItem의 적절한 형식을 선택하고 추가 단추를 클릭하여 ToolStripSeparator 및 세 개의 ToolStripButton 항목을 추가합니다.
단추의 Name 속성을 각각 LoadButton, SaveButton 및 CancelButton으로 설정합니다.
단추의 Text 속성을 Load, Save 및 Cancel로 설정합니다.
단추의 DisplayStyle 속성을 Text로 설정합니다. 또는 이 속성을 Image또는 ImageAndText로설정하고 Image 속성에 표시될 이미지를 설정할 수 있습니다.
확인을 클릭하여 대화 상자를 닫습니다. 세 개의 단추가 ToolStrip에 추가됩니다.
폼을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 선택합니다.
코드 편집기에서 데이터를 테이블 어댑터에 로드하는 코드 줄을 찾습니다. 이 코드는 2단계에서 데이터 바인딩을 설정할 때 생성되며 TableAdapterName.Fill(DataSetName.TableName)과 같은 형태여야 합니다. 이러한 형태는 주로 Load 이벤트에 있습니다.
이전에 만든LoadToolStripButton의 Click 이벤트에 대한 이벤트 처리기를 만들고 이 데이터 로딩 코드를 이벤트 처리기로 이동합니다.
코드는 다음과 같습니다.
[Visual Basic]
Private Sub LoadButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadButton.Click TableAdapterName.Fill(DataSetName.TableName) End Sub
[C#]
private void LoadButton_Click(System.Object sender, System.EventArgs e) { TableAdapterName.Fill(DataSetName.TableName); }
이전에 만든 SaveToolStripButton의 Click 이벤트에 대한 이벤트 처리기를 만들고 코드를 작성하여 컨트롤이 바인딩된 테이블에 있는 데이터를 업데이트합니다.
[Visual Basic]
Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click TableAdapterName.Update(DataSetName.TableName) End Sub
[C#]
private void SaveButton_Click(System.Object sender, System.EventArgs e) { TableAdapterName.Update(DataSetName.TableName); }
참고
BindingNavigator 구성 요소에 이미Save 단추가 있지만 Windows Forms 디자이너에서 코드가 생성되지는 않는 경우도 있습니다. 이 경우 ToolStrip에 새 단추를 만드는 것이 아니라 해당 단추에 대한 Click 이벤트 처리기에 위의 코드를 배치할 수 있습니다. 그러나 단추는 기본적으로 비활성화되므로 단추가 제대로 작동하려면 단추의 Enabled 속성을 true로 설정해야 합니다.
이전에 만든CancelToolStripButton의 Click 이벤트에 대한 이벤트 처리기를 만들고 코드를 작성하여 표시된 데이터 레코드에 대한 모든 변경 내용을 취소합니다.
[Visual Basic]
Private Sub CancelButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancelButton.Click BindingSourceName.CancelEdit() End Sub
[C#]
private void CancelButton_Click(System.Object sender, System.EventArgs e) { BindingSourceName.CancelEdit(); }
참고
CancelEdit 메서드의 범위는 데이터 행까지입니다. 다음 레코드를 탐색하기 전에 표시된 개별 레코드에 대해 수행한 모든 변경 내용을 저장합니다.