1
yhj
2024-07-24 5e5d945e91568b973faa27d8ab0bcef99fc4a6c5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#region
 
using System;
using System.Data;
using System.Text;
using System.Windows.Forms;
using CSFrameworkV5.Business;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Models;
 
#endregion
 
namespace CSFrameworkV5.Library.CommonForms
{
    public delegate void OnReadMessage(int total, int index, DataRow message);
 
    public partial class frmPrompt : frmBase
    {
        private static frmPrompt _Instance;
        private bllMessageCenter _BLL;
        private int _Index;
        private DataTable _Messages;
        private OnReadMessage _OnReadMessage;
 
        public frmPrompt()
        {
            InitializeComponent();
        }
 
        private void btnClose_Click(object sender, EventArgs e)
        {
            Close();
        }
 
        private void btnNext_Click(object sender, EventArgs e)
        {
            if (_Index + 1 <= _Messages.Rows.Count - 1)
            {
                _Index++;
                ShowMessage(_Index);
            }
        }
 
        private void btnPrior_Click(object sender, EventArgs e)
        {
            if (_Index - 1 >= 0)
            {
                _Index--;
                ShowMessage(_Index);
            }
        }
 
        private void frmPrompt_FormClosed(object sender, FormClosedEventArgs e)
        {
            _Instance = null;
        }
 
        private void Init(DataTable message)
        {
            _BLL = new bllMessageCenter();
            _Index = 0;
            _Messages = message;
 
            lblUserName.Text = Loginer.CurrentUser.AccountName + ", 您好!";
            ShowMessage(_Index);
        }
 
        public static void ShowMessage(DataTable message,
            OnReadMessage onReadMessage)
        {
            if (_Instance == null) _Instance = new frmPrompt();
 
            _Instance._OnReadMessage = onReadMessage;
            _Instance.Init(message);
            _Instance.Show();
        }
 
        private void ShowMessage(int index)
        {
            try
            {
                frmWaitingEx.ShowMe(this);
 
                if (_Messages.Rows.Count > 0)
                {
                    var R = _Messages.Rows[index];
 
                    var sender = DataDictCache.GetValue(
                        DataDictCache.Cache.User,
                        tb_MyUser.Account, tb_MyUser.UserName,
                        ConvertEx.ToString(R["SendUser"]));
 
                    var sb = new StringBuilder();
                    sb.AppendLine("发送时间:" +
                                  ConvertEx.ToDateTimeEx(R["SendTime"])
                                      .ToString("yyyy-MM-dd HH:mm:ss") +
                                  "  发送人:" + sender);
                    sb.AppendLine("--------------------------------------");
                    sb.AppendLine(ConvertEx.ToString(R["Message"]));
                    memoEdit1.Text = sb.ToStringEx();
                    var i = index + 1;
                    lblIndex.Text = "第" + i.ToStringEx() + "条,共" +
                                    _Messages.Rows.Count.ToStringEx() + "条";
 
                    if (R["MessageID"] != DBNull.Value)
                    {
                        _BLL.MakeRead(R["MessageID"].ToStringEx(),
                            Loginer.CurrentUser.Account);
                        R["MessageID"] = DBNull.Value; //标记已读
                    }
 
                    if (_OnReadMessage != null)
                        _OnReadMessage(_Messages.Rows.Count, _Index, R);
                }
                else
                {
                    memoEdit1.Text = "您没有消息!";
                    lblIndex.Text = "第0条,共0条";
                }
            }
            finally
            {
                frmWaitingEx.HideMe(this);
            }
        }
    }
}