Initial commit
This commit is contained in:
		| @@ -0,0 +1,219 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Drawing; | ||||
| using System.Windows.Forms; | ||||
|  | ||||
| namespace Project | ||||
| { | ||||
|     public partial class MessageWindow | ||||
|     { | ||||
|         public enum eWindowPosition | ||||
|         { | ||||
|             center = 0, | ||||
|             top = 1, | ||||
|             bottom = 2 | ||||
|         } | ||||
|  | ||||
|         public enum eWindowType | ||||
|         { | ||||
|             information, | ||||
|             error, | ||||
|             attention, | ||||
|         } | ||||
|  | ||||
|         fMsgWindow msgwin; | ||||
|  | ||||
|         public MessageWindow() | ||||
|         { | ||||
|             msgwin = new fMsgWindow(""); | ||||
|             msgwin.VisibleChanged += msgwin_VisibleChanged; | ||||
|         } | ||||
|  | ||||
|         public bool needClose = false; | ||||
|         public Boolean needShow = false; | ||||
|         private CMessageData msgBuffer = new CMessageData(); | ||||
|  | ||||
|         public void setMessage(CMessageData msgData) | ||||
|         { | ||||
|             //마지막데잍와 동일하고 버퍼에 데이터가 있다면 처리하지 않는다. | ||||
|             if (msgBuffer == msgData) return; | ||||
|  | ||||
|             //신규 메세지를 추가 | ||||
|             msgBuffer = msgData; | ||||
|  | ||||
|             //화면이 표시되어야하므로 플래그 설정 | ||||
|             needShow = true; | ||||
|         } | ||||
|  | ||||
|          public void setMessage(string msg,string tag, | ||||
|             eWindowType winType = eWindowType.error, | ||||
|             int width = 900, int height = 500, | ||||
|             Boolean enbClose = true, | ||||
|             Font fontTitle = null, | ||||
|             Font fontBody = null) | ||||
|         { | ||||
|             setMessage(new CMessageData() | ||||
|             { | ||||
|                 Tag = tag, | ||||
|                 EnableClose = enbClose, | ||||
|                 FontContent = fontBody, | ||||
|                 FontTitle = fontTitle, | ||||
|                 Message = msg, | ||||
|                 WindowSize = new Size(width, height), | ||||
|                 WindowType = winType | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         public void setMessage(string msg, | ||||
|             eWindowType winType = eWindowType.error, | ||||
|             int width = 900, int height = 500, | ||||
|             Boolean enbClose = true, | ||||
|             Font fontTitle = null, | ||||
|             Font fontBody = null) | ||||
|         { | ||||
|             setMessage(new CMessageData() | ||||
|             { | ||||
|                 EnableClose = enbClose, | ||||
|                 FontContent = fontBody, | ||||
|                 FontTitle = fontTitle, | ||||
|                 Message = msg, | ||||
|                 WindowSize = new Size(width, height), | ||||
|                 WindowType = winType | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 메세지 버퍼의 내용을 폼으로 표시합니다. | ||||
|         /// UI 쓰레드를 사용하므로 invoke 를 이용해 호출 하거나 | ||||
|         /// UI 쓰레드내에서 실행 하시기 바랍니다. | ||||
|         /// </summary> | ||||
|         public void showMessage() | ||||
|         { | ||||
|             //개체가 없어졌다면 새로생성해서 사용한다 | ||||
|             if (msgwin == null || msgwin.Disposing || msgwin.IsDisposed) | ||||
|             { | ||||
|                 msgwin = new fMsgWindow(""); | ||||
|                 msgwin.VisibleChanged += msgwin_VisibleChanged; | ||||
|             } | ||||
|  | ||||
|  | ||||
|             //등록된 메세지 버퍼의 내용을 화면에 표시한다. | ||||
|             msgwin.TopMost = true; | ||||
|             // msgwin.Disposed += (s1, e1) => { CloseMsg(item.Key); }; | ||||
|             msgwin.Width = this.msgBuffer.WindowSize.Width; | ||||
|             msgwin.Height = msgBuffer.WindowSize.Height; | ||||
|             msgwin.BackColor = Color.FromArgb(200, 200, 200); | ||||
|             msgwin.StartPosition = FormStartPosition.CenterScreen; | ||||
|  | ||||
|             msgwin.setMessage(msgBuffer.Message); | ||||
|             //set font | ||||
|             if (msgBuffer.FontTitle != null) msgwin.lbTitle.Font = msgBuffer.FontTitle; | ||||
|             if (msgBuffer.FontContent != null) | ||||
|             { | ||||
|                 msgwin.lb1.Font = msgBuffer.FontContent; | ||||
|                 msgwin.lb2.Font = msgBuffer.FontContent; | ||||
|                 msgwin.lb3.Font = msgBuffer.FontContent; | ||||
|                 msgwin.lb4.Font = msgBuffer.FontContent; | ||||
|                 msgwin.lb5.Font = msgBuffer.FontContent; | ||||
|                 msgwin.lb6.Font = msgBuffer.FontContent; | ||||
|                 msgwin.lb7.Font = msgBuffer.FontContent; | ||||
|             } | ||||
|  | ||||
|             switch (msgBuffer.WindowType) | ||||
|             { | ||||
|                 case eWindowType.attention: | ||||
|                     msgwin.lbTitle.BackColor = Color.Gold; | ||||
|                     msgwin.lbTitle.BackColor2 = Color.Khaki; | ||||
|                     msgwin.lbTitle.ShadowColor = Color.FromArgb(150, 150, 150); | ||||
|                     msgwin.lbTitle.ForeColor = Color.FromArgb(50, 50, 50); | ||||
|                     break; | ||||
|                 case eWindowType.error: | ||||
|                     msgwin.lbTitle.BackColor = Color.Tomato; | ||||
|                     msgwin.lbTitle.BackColor2 = Color.Red; | ||||
|                     msgwin.lbTitle.ShadowColor = Color.FromArgb(50, 50, 50); | ||||
|                     msgwin.lbTitle.ForeColor = Color.WhiteSmoke; | ||||
|                     break; | ||||
|                 default: | ||||
|                     msgwin.lbTitle.BackColor = Color.DarkTurquoise; | ||||
|                     msgwin.lbTitle.BackColor2 = Color.LightSkyBlue; | ||||
|                     msgwin.lbTitle.ShadowColor = Color.FromArgb(50, 50, 50); | ||||
|                     msgwin.lbTitle.ForeColor = Color.WhiteSmoke; | ||||
|                     break; | ||||
|             } | ||||
|  | ||||
|             if (!msgBuffer.EnableClose) msgwin.EnableUserClose = false; | ||||
|             if (msgwin.Visible == false) msgwin.Show(); | ||||
|             else | ||||
|             { | ||||
|                 msgwin.Visible = true; | ||||
|                 msgwin.Activate(); | ||||
|             } | ||||
|  | ||||
|             needShow = false; | ||||
|             needClose = false; //닫히게되어잇다면 그것을 off해줘야 다시 닫히지 않음 200923 | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// sende는 CMessageData | ||||
|         /// </summary> | ||||
|         public event EventHandler WindowClose; | ||||
|         /// <summary> | ||||
|         /// sender는 CMessageData | ||||
|         /// </summary> | ||||
|         public event EventHandler WindowOpen; | ||||
|         void msgwin_VisibleChanged(object sender, EventArgs e) | ||||
|         { | ||||
|             var f = sender as Form; | ||||
|             if (f.Visible == false) | ||||
|             { | ||||
|                 if (WindowClose != null) WindowClose(msgBuffer, new EventArgs()); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 if (WindowOpen != null) WindowOpen(msgBuffer, new EventArgs()); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         public Boolean Visible | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 if (msgwin == null || msgwin.Disposing || msgwin.IsDisposed) return false; | ||||
|                 return msgwin.Visible; | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 if (msgwin == null || msgwin.Disposing || msgwin.IsDisposed) | ||||
|                 { | ||||
|                     needShow = false; | ||||
|                     needClose = false; | ||||
|                     return; | ||||
|                 } | ||||
|  | ||||
|                 if (value == true) | ||||
|                 { | ||||
|                     if (msgwin.Visible == false) | ||||
|                     { | ||||
|                         msgwin.Show(); | ||||
|                         msgwin.Activate(); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         msgwin.Activate(); | ||||
|                     } | ||||
|                     needShow = false; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     msgwin.Visible = false; | ||||
|                     needClose = false; | ||||
|                 } | ||||
|  | ||||
|             } | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 ChiKyun Kim
					ChiKyun Kim