/// <summary> /// 显示即时消息 /// </summary> /// <param name="message"></param> /// <param name="MsgParamter"></param> private void ShowReciveMessage(TrasenMessage.IMessageProcessor IMessage) { TrasenMessage.MessageCommunication msg = (TrasenMessage.MessageCommunication)IMessage; lock ( _objLock ) { msg.WriteMessage(Application.StartupPath); if (msg.ShowType == 0) { ////如果是气泡方式显示。对变量赋值后,由定时器去处理消息(待改进) //this.newMsg = true; //this.msgSender = msg.Sender; //this.msgContents = msg.MessageString; //this.showTime = msg.ShowTime; //this.showMsg = false; //向主窗口发消息 SendMessageToMainForm(msg); } else { lock ( _objLock ) { //this.Invoke( new ShowMessageFormHandler( showMessagePopForm ) , msg ); showMessagePopForm(msg); } } } }
private void addItem(TrasenMessage.MessageCommunication message) { UCMessageTip ucTip = new UCMessageTip(message); ucTip.Dock = DockStyle.Top; ucTip.Tag = message.MessageId; ucTip.ClickedLinkLabel += new UCMessageTip.OnClickedLinkLabelHandler(ucTip_ClickedLinkLabel); this.plMessageList.Controls.Add(ucTip); }
public UCMessageTip(TrasenMessage.MessageCommunication message) { InitializeComponent(); _message = message; this.lblSender.Text = message.Sender; this.lblSendTime.Text = message.SendTime.ToString("yyyy-MM-dd HH:mm:ss"); this.chkSummary.Text = message.MessageString; this.chkSummary.ForeColor = message.Color; this.llbView.LinkClicked += new LinkLabelLinkClickedEventHandler(llbView_LinkClicked); this.llbClose.LinkClicked += new LinkLabelLinkClickedEventHandler(llbClose_LinkClicked); this.lblNextTip.LinkClicked += new LinkLabelLinkClickedEventHandler(lblNextTip_LinkClicked); }
/// <summary> /// 显示消息弹出窗口 /// </summary> /// <param name="message"></param> private void showMessagePopForm(TrasenMessage.MessageCommunication message) { if (dlgMsg == null) { dlgMsg = new TrasenMessage.DlgImmediatelyMessage(); dlgMsg.MessageContentClicked += new TrasenMessage.OnMessageContentClickedHander(dlgMsg_MessageContentClicked); dlgMsg.SetCheckedMessageStatus += new TrasenMessage.OnSetCheckedMessageStautsHandler(dlgMsg_SetCheckedMessageStatus); dlgMsg.TopMost = true; } dlgMsg.Show(); dlgMsg.BringToFront(); while (!dlgMsg.IsHandleCreated) { //空循环,防止窗口句柄还未创建就执行Invoke方法 } dlgMsg.AddMessage(message); }
/// <summary> /// 显示未处理的消息 /// </summary> private void DisplayUnDealMessage(int systemId, int deptId, int employeeId) { TrasenClasses.DatabaseAccess.RelationalDatabase database = new TrasenClasses.DatabaseAccess.MsSqlServer(); database.Initialize(TrasenFrame.Classes.WorkStaticFun.GetConnnectionString_Default(TrasenFrame.Classes.ConnectionType.SQLSERVER)); List <TrasenFrame.Classes.MessageInfo> undealMessages = TrasenFrame.Classes.MessageInfo.GetUnDealMessageList(systemId, deptId, employeeId, database); if (undealMessages.Count > 0) { foreach (TrasenFrame.Classes.MessageInfo msg in undealMessages) { TrasenMessage.MessageCommunication message = new TrasenMessage.MessageCommunication(msg.MessageId, msg.Summary, msg.SenderName, msg.IsMustRead ? 1 : 0, msg.ShowTime); message.SendTime = msg.SendTime; message.Color = msg.FontColor; ShowReciveMessage(message); } } }
/// <summary> /// 向主窗口发送消息 /// </summary> /// <param name="content"></param> private void SendMessageToMainForm(object content) { string msgString = ""; if (content.GetType() == typeof(Guid)) { msgString = "0$" + (new Guid(content.ToString())).ToString(); } else { TrasenMessage.MessageCommunication msg = (TrasenMessage.MessageCommunication)content; msgString = string.Format("1${0},{1},{2}", msg.Sender, msg.MessageString, msg.ShowTime); } byte[] sarr = System.Text.Encoding.Default.GetBytes(msgString); int len = sarr.Length; COPYDATASTRUCT cds; cds.dwData = (IntPtr)100; cds.lpData = msgString; cds.cbData = len + 1; SendMessage(_MW_Handle.ToInt32(), WM_COPYDATA, 0, ref cds); }
/// <summary> /// 将收到的消息添加到消息列表 /// </summary> /// <param name="message"></param> public void AddMessage(TrasenMessage.MessageCommunication message) { //message.MessageId 消息标记,该标记将存储在显示该条消息的Tag属性中, //当用户在消息弹出窗口点击某条消息时,则应获取该ID构造出消息对象,然后对该消息做进一步的处理,如显示具体的处理界面等。。 this.plMessageList.Invoke(new AddListItem(addItem), message); }