본 자료는
1. 문제 발생 원인
2. 문제 해결 방법
순서로 설명합니다.
해당 내용은 SmartX Old Framework(3.2.4 이하의 버전)에서만 적용되는 내용으로 SmartX New Framework에는 적용되지 않는 내용이기 때문에 주의하시기 바랍니다.
-
SmartX New Framework에서 적용되지 않는 이유
SmartX New Framework(5.0.0.1 이상의 버전)에서는 컨테이너 객체를 닫을 때 발생하는 잔상을 내부적으로 처리하여 다음과 같은 문제가 발생하지 않습니다.
본 현상은 SuspendLayoutInterval과 관련되는 것처럼 보이지만 해결 방법은 다릅니다. 발생하기 위한 MDI 조합은 ShowDialog, Panel, GroupBox 등을 사용한 다이얼로그 창 사용 시 배경 컴포넌트의 갱신에 따른 잔상 현상이 발생합니다. 이러한 경우 SmartForm에서 지원되는 SuspendLayoutInterval 속성으로 개선되지 않습니다. 프로그램 상에서 컨테이너 개체(GroupBox, Panel, Form)등을 닫는 순간 배경에 위치한 컴포넌트에 잔상(겹침 효과)이 발생하는 원인을 설명하고, 이에 대한 해결 방법을 설명합니다.
- [기본 UI]
- [컨테이너 개체 호출]
- [컨테이너 개체 닫을 때 잔상 발생]
1. 문제 발생 원인
프로그램 화면(UI) 디자인 시 MDI 구성 조합을 SmartForm-SmartInnerForm으로 하고, 다이얼로그 창을 사용할 때 화면에 사용자 인터페이스 컴포넌트(Button, RadioButton 등)가 많이 배치되었다면, 컨테이너 개체(다이얼로그 창)를 닫을 때 다이얼로그 창의 색상이나 이미지가 배경에 위치한 컴포넌트들에 잔상(겹침 효과)이 발생할 수 있습니다. 또한, 해당 증상은 메인 폼(SmartForm)에서는 발생하지 않습니다.
[표] 문제 발생 조건MDI 구성 조합 | 잔상 발생 위치 | 컨테이너 개체 종류 |
---|---|---|
SmartForm-SmartInnerForm | SmartInnerForm(서브) | SmartForm, SmartGroupBox, Panel 등등 |
[C#] 문제 발생코드 |
---|
// Enter 버튼 클릭 시 컨테이너 개체를 닫는다. private void Enter_Click( object sender, EventArgs e) { // 컨테이너 1. SmartForm을 다이얼로그 창(컨테이너 개체)으로 출력 후 Closing을 대기
}smartForm1.ShowDialog( typeof(PopupForm), 100, 80); // 컨테이너 2. GroubBox를 닫는다. groupbox1.Visible = false; // 컨테이너 3. Panel을 닫는다. panel.Visible = false; // 잔상 발생 |
2. 문제 해결 방법
이러한 문제를 해결하기 위해서는 2가지 방법이 있습니다. 아래에서 방법 확인 후 적합한 방법을 적용하시기 바랍니다.
NO-1 | 잔상(겹침 효과)이 발생하는 컴포넌트에서 Refresh() 메소드 호출하기 |
---|---|
컨테이너 개체가 닫힐 때, 컨테이너 개체의 아래에 위치하여 잔상이 발생하는 컴포넌트에서 Refresh() 메소드를 호출하면 해당 문제를 해결하실 수 있습니다. |
|
// Enter 버튼 클릭 시 컨테이너 개체를 닫는다. private void Enter_Click(object sender, EventArgs e) { // 컨테이너 1. SmartForm을 다이얼로그 창(컨테이너 개체)으로 출력 후 Closing을 대기
} smartForm1.ShowDialog(typeof(PopupForm), 100, 80); // 컨테이너 2. GroubBox를 닫는다. groupbox1.Visible = false; // 컨테이너 3. Panel을 닫는다. panel.Visible = false; // 잔상이 발생하는 컴포넌트에서 Refresh() 메소드를 호출 button1.Refresh(); button2.Refresh(); button3.Refresh(); button4.Refresh(); // 잔상 발생 안함 |
NO-2 | SmartForm-SmartForm MDI 구성 조합 사용하기 |
---|---|
MDI 구성 조합이 SmartForm-SmartForm인 경우 해당 에러가 발생하지 않으므로, SmartForm-SmartForm MDI 구성 조합을 권장합니다. 참고MDI 구성 조합에 대한 자세한 설명은 "Tech Note 6. SmartForm과 SmartInnerForm으로 만들 수 있는 MDI 구성 조합" 내용을 참고하시기 바랍니다.
|