220 lines
7.0 KiB
C#
220 lines
7.0 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|