Windows 양식 컨트롤은 데이터 원본에 직접 연결할 수 있지만 BindingSource 컨트롤과 함께 사용하도록 디자인되었습니다. 폼 컨트롤에서 데이터 소스로 또는 데이터 소스에서 입력을 마샬링하는 데 사용됩니다.
디자이너에서 양식에 끌어다 놓을 수있는 구성 요소이며, DataGridview 컨트롤의 데이터 원본으로 설정할 수 있습니다.
양식에 있으면 디자이너를 사용하여 datagridview의 데이터 소스로 설정할 수 있습니다. 그런 다음 이벤트 핸들러 (예 : 양식로드 이벤트 핸들러)를 사용하여 데이터 소스를 바인딩 소스의 데이터 소스로 제공 할 수 있습니다.
바인딩 원본은 양식 컨트롤에서 기본 데이터 원본으로 데이터를 전송하는 방법과시기를 훨씬 세밀하게 제어 할 수 있습니다. 바인딩 소스를 사용하면 문제가 해결 될 수 있습니다. 그렇지 않은 경우 데이터를 저장하기 전에 바인딩 소스에서 EndEdit 메서드를 호출하면 해결되지 않은 편집 내용이 데이터 테이블에 기록됩니다.
간단한 예로는 새 Windows 양식 프로젝트를 만듭니다. 양식에 "datagridview1"이라는 이름의 datagridview, peopleBinding 소스 이름이있는 BindingSource 및 saveButton이라는 명령 단추를 추가하십시오. gridview1의 데이터 소스를 peopleBindingSource로 설정하십시오.
다음과 같이 form.Load 및 saveButton.Click에 대한 이벤트 처리기를 추가
public DataTable GetData()
{
DataTable t = new DataTable();
t.Columns.Add("FirstName", typeof(string));
t.Columns.Add("LastName", typeof(string));
t.Rows.Add("Joe","Bloggs");
t.Rows.Add("Fred","Bloggs");
return t;
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.AutoGenerateColumns = true;
DataTable people = GetData();
peopleBindingSource.DataSource = people;
}
private void SaveButton_Click(object sender, EventArgs e)
{
DataTable t = peopleBindingSource.DataSource as DataTable;
}
응용 프로그램을 실행하고 당신은 찾을 수 있어야 당신은 SaveButton_Click의 데이터 테이블을 검사하면 당신이로 변경 한 데이터는 지속됩니다.
당신은 Visual Studio를 당신을 위해 모든 코드를 작성하는 것을 선호하는 경우 :
- 은 "데이터 소스 추가 ..."마법사를 사용하여 새 데이터 소스를 추가합니다.
- 데이터 원본 창에서 테이블을 양식으로 끌어옵니다.
Visual Studio에서 필요한 DataGridView, BindingSource 등을 추가하고 모두 연결합니다. 그런 다음 코드를 검사하여이 코드가 모두 어떻게 맞는지 확인할 수 있습니다.
실제로 제출 버튼을 클릭하면 포커스가 이미 눈금에서 나옵니다. 그것이 Grid.Focused가 틀린 이유입니다. 변경 사항이 데이터 소스에 커밋되지 않은 또 다른 이유가 있어야합니다. –
@IgbyLargeman - 오케이, 어떻게해야합니까? – MAW74656
여기서 워크 플로에 대해 좀 더 자세히 설명해 주시겠습니까?사용자가 행을 클릭하지 않았지만 저장이 트리거되고 있다고 가정합니다. 그게 무슨 소리 야? 나는 과거에는 비슷한 일을했지만 오래 전에는 세부 사항이 너무 어둡다. 항상 그렇듯이 일부 코드가 도움이 될 것입니다. –