1. .NET Compact Framework의 MessageBox와 SmartMessageBox의 차이
2. SmartMessageBox
2-1. 관련된 메서드
3. SmartMessageBox와 SmartTimer를 활용한 구현 방법
순서로 진행합니다.
// SmartTimer를 이용하여 SmartMessageBox의 Text를 변경하는 Tick이벤트
private void smartTimer1_Tick(object sender, EventArgs e)
{
// SmartTimer의 현재 시간의 초(Sec)값을 가져옵니다.
long lNowTime = smartTimer1.GetNowTimeFormat(SmartX.SmartTimer.TimeConvertFormatTypes.Minute_Second).dwSec;
string strTime = lNowTime.ToString("00");
// 버튼의 텍스트를 변경
SmartX.SmartMessageBox.SetButsText_NoneBlocking(strTime, strTime, strTime);
// 캡션의 텍스트를 변경
SmartX.SmartMessageBox.SetCaption_NoneBlocking(strTime + "초 후 닫힙니다.");
// 메시지의 텍스트를 변경
SmartX.SmartMessageBox.SetMessage_NoneBlocking(strTime + "초 후 닫힙니다.");
}
1. .NET Compact Framework의 MessageBox와 SmartMessageBox의 차이
-
MessageBox
1. 변경할 수 있는 항목이 제한적(사이즈, 버튼 텍스트, 아이콘, 색상 등 변경 불가)
2. Blocking 방식만을 지원
3. 사용자가 임의로 Close 불가능
4. 창을 Show한 후 Caption, Message, Button의 텍스트를 변경 불가 -
SmartMessageBox 1. 사용자가 원하는 크기, 버튼 텍스트, 아이콘, 색상 등을 설정 가능
2. Blocking, NoneBlocking 방식 모두 지원
3. 사용자가 임의로 Close 가능
4. 창을 Show한 후 Caption, Message, Button의 텍스트를 변경 가능
2. SmartMessageBox
SmartMessageBox는 Blocking 방식과 NoneBlocking 방식으로 나뉩니다.
이 중 SmartMessageBox를 Show한 후 Text, Caption, Button들의 내용을 바꾸고, 임의로 메시지박
스를 닫기 위해 NoneBlocking 방식으로 SmartMessageBox를 사용합니다.
-
[Modal + Blocking 방식] SmartMessageBox 창이 뜬 동안 터치가 되지 않으며 부모 폼(배경)의 작업 처리 중지
SmartMessageBox를 Show()로 띄우면 모달 방식으로 오픈되고 배경이 되는 폼(부모 폼)은 Blocking 방식으로 처리되어 MessageBox가 오픈된 동안 부모 폼의 작업은 처리가 진행되지 않습니다.
-
[Modal + NoneBlockingDialog 방식] SmartMessageBox 창이 뜬 동안 터치가 되지않으며 부모 폼(배경)의 작업 처리 진행
SmartMessageBox를 ShowDialogNoneBlock()로 띄우면 모달 방식으로 오픈되고 배경이되는 폼(부모 폼)은 NoneBlocking 방식으로 처리되어 MessageBox가 오픈된 동안 부모 폼의 작업은 처리가 진행됩니다.
2-1. 관련된 메서드
1) Show_NoneBlocking() : SmartMessageBox를 NoneBlocking 방식으로 Show합니다.
2) Close_NoneBlocking() : SmartMessageBox가 NoneBlocking 방식으로 Show되었을 때
SmartMessageBox를 닫습니다.
3) SetButsText_NoneBlocking(): SmartMessageBox가 NoneBlocking 방식으로 Show되었을 때 Button의 텍스트를 변경합니다.
4) SetCaption_NoneBlocking() : SmartMessageBox가 NoneBlocking 방식으로 Show되었을 때 Caption의 텍스트를 변경합니다.
5) SetMessage_NoneBlocking() : SmartMessageBox가 NoneBlocking 방식으로 Show되었을 때 Message의 텍스트를 변경합니다.
6) OnNoneBlockingDialogClosing : SmartMessageBox가 NoneBlocking 방식으로 Show된 후 Close될 때 발생하는 이벤트로 클릭한 Button을 인자값으로 받습니다.
3. SmartMessageBox와 SmartTimer를 활용한 구현 방법
일정 시간 이후 SmartMessageBox를 자동으로 닫히는 기능은 Timer 기능을 사용하여 구현할 수 있습니다. Timer의 Tick Event를 사용할 경우 백그라운드에서 복잡한 처리(반복 처리, 쓰레드)등을 사용하여 CPU 사용량이 많으면 timer tick Event의 발생 시간이 지연되어 일정 시간을 맞출 수 없게 됩니다. 이러한 경우 SmartTimer를 사용하여 내부의 별도 Timer Counter를 활용하여 정확한 시간을 Counting할 수 있습니다. 물론 이러한 경우에도 화면의 갱신을 위한 Tick Event의 발생 시간은 일정하지 않습니다. 그렇지만 화면상에 정확한 표시를 위해서 SmartTimer의 내부 Counter 값을 사용하여 출력하면 이러한 문제를 해결하실 수 있습니다.
1. SmartTimer의 CounterMode속성의 값을 설정하여 UpCount, DownCount를 설정할 수 있습니다.
2. SmartTimer를 Start한 후 현재까지 증가/감소한 시간은 아래 속성 및 메서드를 이용하여 확인할 수 있습니다.
- RunningTime : 누적된 값(단위 : ms)
- GetNowTimeFormat() : 경과된 시간을 구조체의 형식으로 가져오기(멤버 : 날짜, 시간, 분, 초, 밀리초)
- GetNowTimeFormatString() : 결과된 시간을 문자열 형식으로 가져오기
* 자세한 내용은 SmartX Framework Reference Guide의 SmartTimer를 참고하시기 바랍니다.