프로그래밍에 익숙하지 않고 객체 수명/인스턴스를 이해하는 데 어려움이 있습니다.오브젝트/디자인 패턴 도움말의 복수 인스턴스 수명
나는 datagridview와 패널이있는 창을 가지고 있습니다.
datagridview에는 데이터베이스에서 채워지는 확인란 목록 열과 이름 목록이 있습니다.
패널에는 텍스트 상자 (예 : 이름, 나이, 좋아하는 스포츠 팀)와 '변경 사항 저장'버튼이 있습니다.
사용자가 적절한 확인란을 선택하여 datagridview에서 사람을 선택하면 패널에 데이터베이스에서 데이터를 가져 와서 해당 사람 (이름, 나이, fav 스포츠 팀)에 대한 관련 데이터가 표시된다는 개념입니다. 사용자가 세부 정보를 업데이트하고 싶으면 텍스트 상자에 입력 한 다음 '변경 사항 저장'버튼을 클릭하면됩니다. 지금까지 아주 간단합니다.
내가 디자인 한 방식은 '패널'클래스를 사용하고 사용자가 확인란을 선택할 때 인스턴스를 만드는 것입니다. (주의 - '패널'클래스를 만든 이유는 내 양식 내에서 다른 탭 페이지의 DataGridview 및 패널을 복제하고 재사용 할 수있는 일반 '패널'클래스를 갖는 것이 유용 할 것이라고 생각한 것입니다 .)
내 코드는 모양이 같은 비트 :
If CheckBoxClicked Then
Dim UpdatePanel As New UpdatePanel(MyForm.NameTextBox, MyForm.AgeTextBox, MyForm.FavSportTeamTextBox, MyForm.SaveButton)
UpdatePanel.GetData()
...
사용자가 SaveButton를 클릭하면 데이터가 데이터베이스에 업데이트 내가 "성공적인 업데이트"라는 표시 메시지 (단순 텍스트 상자)가있다 자체를 숨기기 전에 5 초 동안 표시됩니다.
사용자를 가정이 체크 박스를 검사 데이터를 검토하고 변경하지 않는 한 다음 다른 확인란을 확인하고 '변경 사항 저장'버튼을 클릭하여 데이터를 업데이트하기로 결정 : 여기
문제입니다. 업데이트 성공 메시지가 두 번 표시됩니다.나는 이것이 사용자가 체크 박스를 체크 할 때마다 UpdatePanel의 인스턴스가 생성되기 때문이라고 생각한다. 체크 박스를 사용하는 5 명의 다른 사용자를 선택한 다음 '변경 사항 저장'을 누르면 5 개의 "업데이트 성공"메시지가 표시됩니다.
나는 이것을 극복하는 방법을 모르겠습니다. 체크 박스를 클릭 할 때마다 UpdatePanel의 인스턴스가 존재하는지 확인한 다음 파괴해야합니다. UpdatePanel = Nothing을 사용하여 시도했지만 IDisposable 및 GC.Collect()를 조사했지만 운이 없었습니다.
내 질문은 :
- 어떻게 패널의 한 인스턴스가 생성되어 있는지 확인 할 수 있습니까?
- 내가 같은 이름 와 같은 개체의 여러 인스턴스를 작성하는 경우는 모두 메모리에 앉아 않거나 '컴퓨터'는 가장 최근에 생성에 참조를 유지 하는가? ( 충돌이 있습니까?)
- 내 deisgn 패턴 과 '패널'클래스를 사용하여 잘못된 트랙을 내려 갔습니까?
감사