Files
2026-07-10 15:25:05 +08:00

231 lines
7.8 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ControlLib.com;
using CommonLib;
using CommonLib.data;
namespace Lskj.Main.sub
{
public partial class FrmMessage : FormBase
{
private static FrmMessage _instance = null;
private FrmMessage()
{
InitializeComponent();
}
public static FrmMessage Instance
{
get {
if (_instance == null)
_instance = new FrmMessage();
return _instance;
}
}
//=============================================================================================================
//主界面上的消息标签
public Label MessageButton;
//消息数
public int MessageCount = 0;
/// <summary>
/// 更新消息数
/// </summary>
/// <param name="dec"></param>
public void UpdateMessageCount(int dec)
{
MessageCount += dec;
if(MessageButton!=null)
MessageButton.Text = "消息:" + MessageCount.ToString();
}
private void FrmMessage_Load(object sender, EventArgs e)
{
//初始化位置
this.Top = Screen.PrimaryScreen.Bounds.Height-this.Height-35;
this.Left = Screen.PrimaryScreen.Bounds.Width-this.Width-2;
}
/// <summary>
/// 添加一条消息
/// </summary>
/// <param name="MessageId"></param>
/// <param name="strInfo"></param>
public void AddItem(int MessageId, string strInfo)
{
SingleSelecter item = new SingleSelecter();
item.SetInfo(MessageId, strInfo);
panelContainer.Controls.Add(item);
item.ContextMenuStrip = this.contextMenuStrip1;
item.LblInfo.DoubleClick += new EventHandler(onItemDoubleClick);
item.LblInfo.Click += new EventHandler(onItemClick);
//if (panelContainer.Controls.Count % 2 == 1)
// item.BackColor = Color.LightSlateGray;
//else
// item.BackColor = Color.White;
Reset();
UpdateMessageCount(1);
}
//增加和删除后重新将panel中的控件排位置
private void Reset()
{
int startY = 0;
for (int i = 0; i < panelContainer.Controls.Count; i++)
{
Control c = panelContainer.Controls[i];
c.Top = startY;
startY += c.Height;
}
}
//删除选中
private void btnDelSelected_Click(object sender, EventArgs e)
{
for(int i=0;i<panelContainer.Controls.Count;)
{
Control c = panelContainer.Controls[i];
SingleSelecter item = (SingleSelecter)c;
if(item!=null && item.Checked)
{
DelMessage0("用户删除信息", item.MessageId);
panelContainer.Controls.Remove(c);
}
else
i++;
}
Reset();
}
//删除所有
private void btnDelAll_Click(object sender, EventArgs e)
{
SqlHelper.ExecuteNonQuery(CommandType.Text, "insert P_H_MsgHintEmployeeTab select *,getdate() from P_MsgHintEmployeeTab where LoginAccount='" + ERPInfo.Instance.OperatorName + "'", null);
SqlHelper.ExecuteNonQuery(CommandType.Text, "delete P_MsgHintEmployeeTab where LoginAccount='" + ERPInfo.Instance.OperatorName + "'", null);
SqlHelper.ExecuteNonQuery(CommandType.Text, "insert P_H_MessageHintTab select *,getdate() from P_MessageHintTab where messageid not in (select messageid from P_H_MessageHintTab)", null);
SqlHelper.ExecuteNonQuery(CommandType.Text, "DELETE P_MessageHintTab where messageid not in(select messageid from P_MsgHintEmployeeTab)", null);
UpdateMessageCount(-MessageCount);
panelContainer.Controls.Clear();
Close();
}
//关闭消息窗体
private void btnClose_Click(object sender, EventArgs e)
{
//这里该怎么处理消息了
//UpdateMessageCount(-MessageCount);
//panelContainer.Controls.Clear();
this.Close();
}
//弹出菜单删除选择项
private void menuDelSelect_Click(object sender, EventArgs e)
{
foreach (Control c in panelContainer.Controls)
{
SingleSelecter item = (SingleSelecter)c;
if (item != null && item.Selected)
{
DelMessage0("用户删除信息", item.MessageId);
panelContainer.Controls.Remove(c);
Reset();
UpdateMessageCount(-1);
return;
}
}
}
//单击到某个容器则修改selected状态
private void onItemClick(object sender, EventArgs e)
{
Label lbl = (Label)sender;
SingleSelecter item = (SingleSelecter)lbl.Parent;
foreach (Control c in panelContainer.Controls)
{
SingleSelecter item1 = (SingleSelecter)c;
if (item1 != null)
item1.Selected = false;
}
item.Selected = true;
}
//双击弹出其他操作窗口
private void onItemDoubleClick(object sender, EventArgs e)
{
Label lbl = (Label)sender;
SingleSelecter item = (SingleSelecter)lbl.Parent;
//string strInfo = item.LblInfo.Text;
//MessageBox.Show(strInfo);
string DllFileName = item.DllName;//除了库名还应提供是delphi还是c#标志
if (DllFileName!="")
{
this.Hide();
//Gtime4id = 1;
//string NewModelFlag = "";
//PubUtil.LoadDll(DllFileName, NewModelFlag);
PubUtil.LoadDelphiDll(PubUtil.AbsolutelyPath + "lib/" + DllFileName, DllFileName, DllFileName, DllFileName, "OK", 100, "");
//rightstr(node.Values[3], 12)
//Gtime4id := 0;
this.Show();
}
}
/// <summary>
/// 查阅消息后处理
/// </summary>
/// <param name="SysMessage"></param>
/// <param name="messageid"></param>
private void DelMessage0(string SysMessage, int messageid)
{
try
{
string strSql = string.Format("update P_MessageHintTab set HintType=0 where HintType=1 and messageid='{0}'", messageid);
SqlHelper.ExecuteNonQuery(CommandType.Text, strSql, null);
// MgePackageDel.messageid := messageid;
// MgePackageDel.SqlValue := IntToStr(messageid) + '|';
// MgePackageDel.LoginAccounts := GOperatorname;
// MgePackageDel.Remark := SysMessage;
// MgePackageDel.OpWay := 4;
// MgePackageDel.ADOSP := pr_MessageHintop;
// PubleUnit.MessAgeMge.FDeleteMessage(MgePackageDel);
}
catch (Exception ex)
{
PubUtil.WriteError("查阅消息后处理出错" , ex.Message);
}
}
/// <summary>
/// 是否可以释放窗体
/// </summary>
public bool CanClose = false;
private void FrmMessage_FormClosing(object sender, FormClosingEventArgs e)
{
if (!CanClose && e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
this.Hide();
}
}
}
}