퇴근5분전


BaseForm은 기본적인 폼 생성에 기초적인 몇가지를 미리 구현해두고 편리하게 사용하도록 만들어둔 Base객체임.

이외에 BaseUserControl도 있고... 등등...

지금은 BaseForm에 간단한 기능몇가지...

JsFW dll모음을 참조추가해주고

BaseForm을 상속 시켜주면

 우선 디자인뷰에서 속성창에 속성이 하나 나온다. 기존에 블로깅한 글에 하나에 있는데 초기 폼 위치결정을
UI로 할수 있도록 해주는 창이다.


처럼 하면 작업표시줄 위에 올라온다.


NotifyICon 사용하기...

public partial class Form1 : BaseForm
    {
        public Form1()
        {
            InitializeComponent();

          this.NotifyIcon = Resources.Icon1;
         this.NotifyIcon_Visible = true;
         this.NotifyIcon_Menu = new ContextMenu();
         this.NotifyIcon_Menu.MenuItems.Add(
                                    new MenuItem("종료하기", delegate { this.Close(); }));
        }
    }

간단히 ICon을 추가해놓고...  위처럼 간단히 넣어주면 된다.



실행결과는 위에 처럼 나온다. Js빨간 아이콘이 NotifyIcon을 적용한것이다. 우측버튼 클릭하면 등록한데로
종료하기가 나타난다.

그이외에도 BaseForm에는 몇가지 추가된 요소가 더있는데 기억이 ㅠㅠ;

컨트롤 추가하고 이 이벤트를 한곳에 모아놓기 위한 이벤트 핸들이라든가... 몇가지 있긴 한데...

아참 메세지 박스...  로그남기는 메서드등...등.. 있긴한데..

메세지 박스...

Alert(); 메서드인데... Alert <-- 웹할때 너무 익숙해져서... 훗!




 그냥 Alert창..



타이머 가동된 Alert    10초후 자동으로 닫힌다.  우측 숫자가 카운트...




        public static bool UsedLogging { get; set; }
        public void Alert(BaseException bEx);
        public virtual void Alert(string Msg);
        public void Alert(ValidationException vEx);
        public virtual void Alert(string Msg, int? ShowDelayTime);
        public virtual void Alert(string Msg, string title);
        public virtual void Alert(string Msg, string title, int? ShowDelayTime);
       
        protected virtual void OnUniButton_Click(object sender, JsFW_ButtonEventArgs e);
       
        protected void ShowDebugWindow(DataBase_Business DataBase, Control _opener);
        protected void ShowDebugWindow(DataBase_Business DataBase, string _opener);


Alert을 보면 예외 관련해서 몇가지 받고, 메세지처리도 하고..

또 ShowDebugWindow 처럼 비지니스 호출하면서 디버그창을 띠울지 말지도 지원이 된다.


 BaseForm : Form, IFadeEffect 를 구현해두어서...

윈7에서는 그닥 효과가 눈에 안띠지만..

기존xp같은경우 FormShow 될때 서서히 나타나고 Close될때 서서히 사라지는 효과도 구현이 되어있다.



OnUniButton_Click 는 Button을 컨트롤로 직접 구현해두고 Click이벤트를 재정의 할수 있도록 가상메서드로 구현해두었다.

UniButton으로 만들어진 UniBtnClick 이벤트에 핸들러로 붙일수 있고
이때 버튼에 특정기능코드를 넣었을때 버튼처리를 분기할수 있도록 해놨기에....

아... 실수로 접근제한자를 잘못 넣어놔서 안보이는 중...

간단히 예제에 대한 처리.. 소스를 살짝쿵... 적어본다.


 protected override void OnUniButton_Click(object sender, JsFW_ButtonEventArgs e)
        {
            base.OnUniButton_Click(sender, e);

            switch (e.Code)
            {
                case Button_Codes.등록: break;
                case Button_Codes.닫기: break;
                case Button_Codes.Special :
                    switch (e.Special)
                    {
                        case Button_Codes_Special.SpecialBtn1: break;
                        case Button_Codes_Special.없다: break;
                    }
                    break;
            }
        }

이런형태로 버튼마다 생성시 해당 기능을 설정해두면 클릭이벤트에 위 메서드로 연결해주면
각 버튼별 처리를 위처럼 분리해서 구현할수 있다.
여기에 비지니스처리등을 각각 맞게 설정가능하다.