Winform 응용 프로그램이 있는데 C#으로 작성하고 있습니다. 내 양식에는 TabControl이 7 페이지 (각각 TextBoxes 및 DropDownLists, 주로)로 가득 차 있습니다. DataReader를 사용하여 정보를 가져 와서 DataTable을 채우고 요소의 DataBindings.Add 메서드를 사용하여 해당 요소를 현재 값으로 채 웁니다.C# Winforms TabControl 요소가 TabPage가 선택 될 때까지 빈 상태로 읽음
사용자는 이러한 요소에 데이터를 입력하고 "저장"을 누른 다음 요소의 텍스트 필드를 사용하여 UPDATE 쿼리의 매개 변수를 설정할 수 있습니다. 예를 들어 :
updateCommand.Parameters.Add("@CustomerName", SqlDbType.VarChar, 100).Value = CustomerName.Text;
내가 가진 문제는 양식을로드하면 내가 수동으로 각 탭을 선택할 때까지, 모든 요소가 분명히 빈 간주한다는 것이다. 따라서 폼을로드 할 때 즉시 "저장"을 누르면 아직 선택하지 않은 TabPages의 모든 필드가 비어있는 데이터로 업데이트를 시도합니다. 각 TabPage를 선택하면 해당 요소가 올바르게 데이터를 전송하게됩니다. 당분간 나는 데이터가 처음으로 채워지는 경우 프로그래밍 방식으로 각 TabPage를 선택하는 (매우) 추악한 해결 방법을 찾아 냈지만 용납 할 수없는 장기적인 솔루션입니다.
제 질문은 TabPage에서 사용자가 TabPage를 선택하기 전에 데이터를 올바르게 반환하도록하려면 어떻게해야합니까?
무슨 일이 일어나는지 잘 모르겠지만 컨트롤이 데이터 바인딩되면 컨트롤의 텍스트 필드가 아닌 BindingSource에서 값을 가져와야합니다. –
BindingSource와 TabControl의 여러 탭을 사용할 때 똑같은 문제가 발생했습니다. – Tommassiov