Visual Basic에서 폼의 상태(크기, 위치, 필드 값)를 사용자 세션 간에 저장하는 주요 작업은 애플리케이션 종료 시 외부 소스(파일, 레지스트리, 사용자 설정)에 데이터를 기록하고 애플리케이션 시작 시 복원하는 것입니다.
접근 방식:
My.Settings 사용 예:
' 상태 저장 Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing My.Settings.WindowLocation = Me.Location My.Settings.WindowSize = Me.Size My.Settings.Save() End Sub ' 상태 복원 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load If Not My.Settings.WindowSize.IsEmpty Then Me.Size = My.Settings.WindowSize End If If Not My.Settings.WindowLocation.IsEmpty Then Me.Location = My.Settings.WindowLocation End If End Sub
설정은 디자이너를 통해 추가하거나 수동으로 추가할 수 있습니다.
세부 사항:
My.Settings를 통해 비표준 객체(예: DataTable)를 저장할 수 있나요? 이를 올바르게 구현하려면 어떻게 해야 하나요?
답변: 가능하지만, 설정은 사용자 유형이어야 하며 객체는 직렬화를 지원해야 합니다. DataTable 또는 복잡한 객체의 경우 My.Settings는 직렬화된 바이너리/XML 형식을 저장합니다. 직렬화 지원을 구현하거나 직렬 변환기를 통해 수동 기록을 사용해야 합니다.
이야기
애플리케이션에서 Windows 레지스트리에 폼의 상태를 저장했습니다. 몇 가지 업데이트 후, 사용자는 권한 제한으로 인해 설정에 접근할 수 없게 되어 대량의 지원 요청이 발생했습니다. 해결책 — 사용자 프로필의 My.Settings로 전환.
이야기
애플리케이션 시작 시 창의 위치 좌표를 확인하지 않아 애플리케이션이 화면의 보이지 않는 영역에 표시되었습니다(두 번째 모니터가 변경됨). 이제 폼 위치를 복원할 때 작업 공간의 경계를 확인하는 로직이 추가되었습니다.
이야기
이전 버전의 애플리케이션으로 업데이트할 때 개발자는 사용자 설정(폼 세부 필드)을 이전하지 않았습니다. 결과 — 데이터 손실 및 사용자 불만. 설정 버전 마이그레이션 지원 정책이 수립되었습니다.