사용자 지정 컨트롤에 대한 애플리케이션 설정

컨트롤이 타사 애플리케이션에서 호스트되는 경우 사용자 지정 컨트롤에 애플리케이션 설정을 유지하는 기능을 제공하려면 특정 작업을 완료해야 합니다.

애플리케이션 설정 기능에 대한 대부분의 설명서는 독립 실행형 애플리케이션을 만들고 있다는 가정 하에 작성됩니다. 그러나 다른 개발자가 해당 애플리케이션에서 호스트할 컨트롤을 만드는 경우 컨트롤의 설정을 제대로 유지하려면 몇 가지 추가 단계를 수행해야 합니다.

애플리케이션 설정 및 사용자 지정 컨트롤

컨트롤이 해당 설정을 제대로 유지하려면 ApplicationSettingsBase에서 파생된 고유한 전용 애플리케이션 설정 래퍼 클래스를 만들어 프로세스를 캡슐화해야 합니다. 또한 주 컨트롤 클래스는 IPersistComponentSettings를 구현해야 합니다. 인터페이스에는 여러 속성과 LoadComponentSettingsSaveComponentSettings의 두 가지 메서드가 포함됩니다. Visual Studio에서 Windows Forms 디자이너를 사용하여 양식에 컨트롤을 추가하는 경우 Windows Forms는 컨트롤이 초기화될 때 자동으로 LoadComponentSettings를 호출합니다. 컨트롤의 Dispose 메서드에서 SaveComponentSettings를 직접 호출해야 합니다.

또한 사용자 지정 컨트롤의 애플리케이션 설정이 Visual Studio와 같은 디자인 타임 환경에서 제대로 작동하려면 다음을 구현해야 합니다.

  1. 단일 매개 변수로 IComponent를 사용하는 생성자가 있는 사용자 지정 애플리케이션 설정 클래스입니다. 이 클래스를 사용하여 모든 애플리케이션 설정을 저장하고 로드합니다. 이 클래스의 새 인스턴스를 만들 때 생성자를 사용하여 사용자 지정 컨트롤을 전달합니다.

  2. 양식의 Load 이벤트 처리기와 같이 컨트롤을 만들고 양식에 배치한 후 이 사용자 지정 설정 클래스를 만듭니다.

사용자 지정 설정 클래스를 만드는 방법에 대한 지침은 방법: 애플리케이션 설정 만들기를 참조하세요.

설정 키 및 공유 설정

일부 컨트롤은 동일한 양식 내에서 여러 번 사용할 수 있습니다. 대부분의 경우 이러한 컨트롤이 고유한 개별 설정을 유지하도록 할 수 있습니다. IPersistComponentSettingsSettingsKey 속성을 사용하면 양식에서 여러 버전의 컨트롤을 명확하게 구분하는 고유한 문자열을 제공할 수 있습니다.

SettingsKey를 구현하는 가장 간단한 방법은 SettingsKey에 대한 컨트롤의 Name 속성을 사용하는 것입니다. 컨트롤의 설정을 로드하거나 저장할 때 SettingsKey 값을 ApplicationSettingsBase 클래스의 SettingsKey 속성에 전달합니다. 애플리케이션 설정은 사용자 설정을 XML로 유지할 때 이 고유 키를 사용합니다. 다음 코드 예제에서는 <userSettings> 섹션이 Text 속성에 대한 설정을 저장하는 CustomControl1이라는 사용자 지정 컨트롤의 인스턴스를 찾을 수 있는 방법을 보여 줍니다.

<userSettings>
    <CustomControl1>
        <setting name="Text" serializedAs="string">
            <value>Hello, World</value>
        </setting>
    </CustomControl1>
</userSettings>

SettingsKey에 대한 값을 제공하지 않는 컨트롤의 모든 인스턴스는 동일한 설정을 공유합니다.

참고 항목