2017-02-22 14:30:10 +08:00
|
|
|
|
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 Newtonsoft.Json.Linq;
|
|
|
|
|
|
using CommonLibrary;
|
|
|
|
|
|
using System.Threading;
|
2017-04-23 18:05:12 +08:00
|
|
|
|
using HslCommunication;
|
|
|
|
|
|
using HslCommunication.Enthernet;
|
2017-05-04 15:27:14 +08:00
|
|
|
|
using HslCommunication.BasicFramework;
|
2017-02-22 14:30:10 +08:00
|
|
|
|
|
|
|
|
|
|
|
2017-05-20 09:41:21 +08:00
|
|
|
|
/***************************************************************************************
|
|
|
|
|
|
*
|
2017-06-16 09:52:58 +08:00
|
|
|
|
* 模版日期 2017-06-16
|
2017-05-20 09:41:21 +08:00
|
|
|
|
* 创建人 胡少林
|
|
|
|
|
|
* 版权所有 胡少林
|
|
|
|
|
|
* 授权说明 模版仅授权个人使用,如需商用,请联系hsl200909@163.com洽谈
|
|
|
|
|
|
* 说明一 JSON组件引用自james newton-king,遵循MIT授权协议
|
|
|
|
|
|
* 说明二 文件的图标来源于http://fileicons.chromefans.org/,感谢作者的无私分享
|
|
|
|
|
|
*
|
|
|
|
|
|
****************************************************************************************/
|
2017-02-22 14:30:10 +08:00
|
|
|
|
|
2017-05-20 09:41:21 +08:00
|
|
|
|
/***************************************************************************************
|
|
|
|
|
|
*
|
|
|
|
|
|
* 版本说明 最新版以github为准,由于提交更改比较频繁,需要经常查看官网地址:https://github.com/dathlin/C-S-
|
|
|
|
|
|
* 注意 本代码的相关操作未作密码验证,如有需要,请自行完成
|
|
|
|
|
|
* 示例 密码验证具体示例参照Form1_FormClosing(object sender, FormClosingEventArgs e)方法
|
|
|
|
|
|
* 如果 遇到启动调试就退出了,请注释掉Program.cs文件中的指允许启动一个实例的代码
|
|
|
|
|
|
*
|
|
|
|
|
|
****************************************************************************************/
|
2017-02-22 14:30:10 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace 软件系统客户端模版
|
|
|
|
|
|
{
|
|
|
|
|
|
public partial class FormMainWindow : Form
|
|
|
|
|
|
{
|
|
|
|
|
|
public FormMainWindow()
|
|
|
|
|
|
{
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#region 窗口的属性和方法
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 指示窗口是否显示的标志
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private bool IsWindowShow { get; set; } = false;
|
|
|
|
|
|
|
|
|
|
|
|
private void FormMainWindow_Load(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-06-07 16:20:40 +08:00
|
|
|
|
//udp测试
|
2017-06-16 09:52:58 +08:00
|
|
|
|
//SendServerUdpData(0, "载入了窗体");
|
2017-06-07 16:20:40 +08:00
|
|
|
|
|
2017-02-22 14:30:10 +08:00
|
|
|
|
//窗口载入
|
|
|
|
|
|
label_userName.Text = UserClient.UserAccount.UserName;
|
|
|
|
|
|
label_grade.Text = AccountGrade.GetDescription(UserClient.UserAccount.Grade);
|
|
|
|
|
|
label_factory.Text = UserClient.UserAccount.Factory;
|
|
|
|
|
|
label_register.Text = UserClient.UserAccount.RegisterTime.ToString();
|
|
|
|
|
|
label_last.Text = UserClient.UserAccount.LastLoginTime.ToString();
|
|
|
|
|
|
label_times.Text = UserClient.UserAccount.LoginFrequency.ToString();
|
|
|
|
|
|
label_address.Text = UserClient.UserAccount.LastLoginIpAddress;
|
|
|
|
|
|
|
2017-03-06 21:10:38 +08:00
|
|
|
|
//状态栏设置
|
|
|
|
|
|
toolStripStatusLabel_time.Alignment = ToolStripItemAlignment.Right;
|
|
|
|
|
|
statusStrip1.LayoutStyle = ToolStripLayoutStyle.StackWithOverflow;
|
2017-03-08 18:46:28 +08:00
|
|
|
|
toolStripStatusLabel1.Text = $"本软件著作权归{Resource.StringResouce.SoftCopyRight}所有";
|
2017-03-06 21:10:38 +08:00
|
|
|
|
|
2017-02-22 14:30:10 +08:00
|
|
|
|
//绑定事件,仅执行一次,不能放到show方法里
|
|
|
|
|
|
net_socket_client.MessageAlerts += Net_socket_client_MessageAlerts;
|
|
|
|
|
|
net_socket_client.LoginFailed += Net_socket_client_LoginFailed;
|
|
|
|
|
|
net_socket_client.LoginSuccess += Net_socket_client_LoginSuccess;
|
|
|
|
|
|
net_socket_client.AcceptByte += Net_socket_client_AcceptByte;
|
|
|
|
|
|
net_socket_client.AcceptString += Net_socket_client_AcceptString;
|
|
|
|
|
|
//启动网络服务
|
|
|
|
|
|
Net_Socket_Client_Initialization();
|
|
|
|
|
|
|
|
|
|
|
|
label_Announcement.Text = UserClient.Announcement;
|
|
|
|
|
|
|
|
|
|
|
|
toolStripStatusLabel_Version.Text = UserClient.CurrentVersion.ToString();
|
2017-04-04 16:24:17 +08:00
|
|
|
|
|
|
|
|
|
|
//初始化窗口
|
|
|
|
|
|
MainRenderInitialization();
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
private void FormMainWindow_Shown(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
//窗口显示
|
|
|
|
|
|
IsWindowShow = true;
|
|
|
|
|
|
|
2017-06-07 16:20:40 +08:00
|
|
|
|
//udp测试
|
2017-06-16 09:52:58 +08:00
|
|
|
|
//SendServerUdpData(0, "显示了窗体");
|
2017-02-22 14:30:10 +08:00
|
|
|
|
|
2017-05-30 16:33:14 +08:00
|
|
|
|
//是否显示更新日志,显示前进行判断该版本是否已经显示过了
|
|
|
|
|
|
if (UserClient.JsonSettings.IsNewVersionRunning)
|
2017-02-22 14:30:10 +08:00
|
|
|
|
{
|
|
|
|
|
|
UserClient.JsonSettings.IsNewVersionRunning = false;
|
2017-05-04 15:27:14 +08:00
|
|
|
|
UserClient.JsonSettings.SaveToFile();
|
2017-03-04 17:07:26 +08:00
|
|
|
|
更新日志ToolStripMenuItem_Click(null, new EventArgs());
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//根据权限使能菜单
|
2017-05-30 16:33:14 +08:00
|
|
|
|
if (UserClient.UserAccount.Grade < AccountGrade.SuperAdministrator)
|
2017-02-22 14:30:10 +08:00
|
|
|
|
{
|
|
|
|
|
|
日志查看ToolStripMenuItem.Enabled = false;
|
|
|
|
|
|
账户管理ToolStripMenuItem.Enabled = false;
|
|
|
|
|
|
远程更新ToolStripMenuItem.Enabled = false;
|
2017-06-23 13:31:25 +08:00
|
|
|
|
注册账号ToolStripMenuItem.Enabled = false;
|
|
|
|
|
|
消息发送ToolStripMenuItem.Enabled = false;
|
2017-07-02 10:29:48 +08:00
|
|
|
|
开发中心ToolStripMenuItem.Enabled = false;
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
2017-06-16 09:52:58 +08:00
|
|
|
|
//启动定时器
|
|
|
|
|
|
TimeTickInitilization();
|
2017-07-06 22:04:52 +08:00
|
|
|
|
//显示头像
|
|
|
|
|
|
DownloadUserPortraint();
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
private void FormMainWindow_FormClosing(object sender, FormClosingEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
//窗口关闭
|
|
|
|
|
|
IsWindowShow = false;
|
2017-05-30 16:33:14 +08:00
|
|
|
|
//通知服务器退出网络服务
|
2017-02-22 14:30:10 +08:00
|
|
|
|
net_socket_client.ClientClose();
|
|
|
|
|
|
|
|
|
|
|
|
//等待一秒退出
|
2017-06-23 13:31:25 +08:00
|
|
|
|
using (FormWaitInfomation fwm = new FormWaitInfomation("正在退出程序...", 1000))
|
|
|
|
|
|
{
|
|
|
|
|
|
fwm.ShowDialog();
|
|
|
|
|
|
}
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 菜单逻辑块
|
|
|
|
|
|
|
|
|
|
|
|
private void 修改密码ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
//实例化一个密码修改的窗口,并指定了实现修改的具体方法,指定了密码长度
|
2017-05-20 09:41:21 +08:00
|
|
|
|
using (FormPasswordModify fpm = new FormPasswordModify(UserClient.UserAccount.Password,
|
|
|
|
|
|
p =>
|
|
|
|
|
|
{
|
|
|
|
|
|
JObject json = new JObject
|
|
|
|
|
|
{
|
|
|
|
|
|
{ UserAccount.UserNameText, UserClient.UserAccount.UserName },
|
|
|
|
|
|
{ UserAccount.PasswordText, p }
|
|
|
|
|
|
};
|
2017-06-16 09:52:58 +08:00
|
|
|
|
return UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.密码修改, json.ToString()).IsSuccess;
|
2017-05-20 09:41:21 +08:00
|
|
|
|
}, 6, 8))
|
|
|
|
|
|
{
|
|
|
|
|
|
fpm.ShowDialog();
|
|
|
|
|
|
}
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void 关于本软件ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-05-20 09:41:21 +08:00
|
|
|
|
using (FormAbout fa = new FormAbout(Resource.StringResouce.SoftName,
|
|
|
|
|
|
UserClient.CurrentVersion, 2017, Resource.StringResouce.SoftCopyRight))
|
|
|
|
|
|
{
|
|
|
|
|
|
fa.ShowDialog();
|
|
|
|
|
|
}
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void 更新日志ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
//更新情况复位
|
|
|
|
|
|
if (UserClient.JsonSettings.IsNewVersionRunning)
|
|
|
|
|
|
{
|
|
|
|
|
|
UserClient.JsonSettings.IsNewVersionRunning = false;
|
2017-05-04 15:27:14 +08:00
|
|
|
|
UserClient.JsonSettings.SaveToFile();
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
2017-05-20 09:41:21 +08:00
|
|
|
|
using (FormUpdateLog ful = new FormUpdateLog(UserClient.HistoryVersions))
|
|
|
|
|
|
{
|
|
|
|
|
|
ful.ShowDialog();
|
|
|
|
|
|
}
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void 版本号说明ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-05-20 09:41:21 +08:00
|
|
|
|
using (FormAboutVersion fav = new FormAboutVersion(UserClient.CurrentVersion))
|
|
|
|
|
|
{
|
|
|
|
|
|
fav.ShowDialog();
|
|
|
|
|
|
}
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void 更改公告ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-05-20 09:41:21 +08:00
|
|
|
|
using (FormInputAndAction fiaa = new FormInputAndAction(str => UserClient.Net_simplify_client.ReadFromServer(
|
2017-06-16 09:52:58 +08:00
|
|
|
|
CommonHeadCode.SimplifyHeadCode.更新公告, str).IsSuccess, UserClient.Announcement, "请输入公告内容"))
|
2017-05-20 09:41:21 +08:00
|
|
|
|
{
|
|
|
|
|
|
fiaa.ShowDialog();
|
|
|
|
|
|
}
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void 日志查看ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-05-20 09:41:21 +08:00
|
|
|
|
using (FormLog flg = new FormLog())
|
|
|
|
|
|
{
|
|
|
|
|
|
flg.ShowDialog();
|
|
|
|
|
|
}
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-03-04 17:07:26 +08:00
|
|
|
|
private void 注册账号ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-04-23 18:05:12 +08:00
|
|
|
|
using (FormRegisterAccount fra = new FormRegisterAccount())
|
2017-03-04 17:07:26 +08:00
|
|
|
|
{
|
|
|
|
|
|
fra.ShowDialog();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-02-22 14:30:10 +08:00
|
|
|
|
private void 账户管理ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
FormAccountManage fam = new FormAccountManage(() =>
|
|
|
|
|
|
{
|
2017-06-16 09:52:58 +08:00
|
|
|
|
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.获取账户);
|
2017-02-22 14:30:10 +08:00
|
|
|
|
if (result.IsSuccess) return result.Content;
|
|
|
|
|
|
else return result.ToMessageShowString();
|
2017-06-16 09:52:58 +08:00
|
|
|
|
}, m => UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.更细账户, m).IsSuccess);
|
2017-02-22 14:30:10 +08:00
|
|
|
|
fam.ShowDialog();
|
|
|
|
|
|
fam.Dispose();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void 远程更新ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-03-22 19:50:11 +08:00
|
|
|
|
if (UserClient.UserAccount.UserName == "admin")
|
2017-03-04 21:56:20 +08:00
|
|
|
|
{
|
2017-03-22 19:50:11 +08:00
|
|
|
|
using (FormUpdateRemote fur = new FormUpdateRemote())
|
2017-03-04 21:56:20 +08:00
|
|
|
|
{
|
2017-03-22 19:50:11 +08:00
|
|
|
|
fur.ShowDialog();
|
2017-03-04 21:56:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-03-22 19:50:11 +08:00
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("权限不足!");
|
|
|
|
|
|
}
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-03-31 20:23:48 +08:00
|
|
|
|
private void linkLabel_logout_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
Program.QuitCode = 1;
|
|
|
|
|
|
Close();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-05-18 17:13:42 +08:00
|
|
|
|
private void 留言板ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
SetShowRenderControl(UIControls_Chat);
|
|
|
|
|
|
UIControls_Chat?.InputFocus();
|
2017-06-25 15:37:23 +08:00
|
|
|
|
UIControls_Chat?.ScrollToDown();
|
2017-05-18 17:13:42 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-06-05 17:32:46 +08:00
|
|
|
|
private void 意见反馈ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
using (FormInputAndAction fiaa = new FormInputAndAction(str => UserClient.Net_simplify_client.ReadFromServer(
|
2017-06-16 09:52:58 +08:00
|
|
|
|
CommonHeadCode.SimplifyHeadCode.意见反馈, UserClient.UserAccount.UserName + ":" + str).IsSuccess, "", "请输入意见反馈:"))
|
2017-06-05 17:32:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
fiaa.ShowDialog();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-06-17 18:36:29 +08:00
|
|
|
|
private void 消息发送ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
using (FormInputAndAction fiaa = new FormInputAndAction(str => UserClient.Net_simplify_client.ReadFromServer(
|
|
|
|
|
|
CommonHeadCode.SimplifyHeadCode.群发消息, UserClient.UserAccount.UserName + ":" + str).IsSuccess, "", "请输入群发的消息:"))
|
|
|
|
|
|
{
|
|
|
|
|
|
fiaa.ShowDialog();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-07-02 10:29:48 +08:00
|
|
|
|
private void 开发中心ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-07-02 18:48:35 +08:00
|
|
|
|
using (FormSuper fs = new FormSuper(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
OperateResultBytes result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.性能计数, new byte[0]);
|
|
|
|
|
|
//解析
|
|
|
|
|
|
if (result.IsSuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
int[] data = new int[result.Content.Length / 4];
|
|
|
|
|
|
for (int i = 0; i < data.Length; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
data[i] = BitConverter.ToInt32(result.Content, i * 4);
|
|
|
|
|
|
}
|
|
|
|
|
|
return data;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}))
|
2017-07-02 10:29:48 +08:00
|
|
|
|
{
|
|
|
|
|
|
fs.ShowDialog();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-07-06 22:04:52 +08:00
|
|
|
|
|
|
|
|
|
|
private void 更换头像ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
ChangePortrait();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-02-22 14:30:10 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 异步网络块
|
|
|
|
|
|
|
|
|
|
|
|
private Net_Socket_Client net_socket_client = new Net_Socket_Client();
|
|
|
|
|
|
|
|
|
|
|
|
private void Net_Socket_Client_Initialization()
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
2017-03-05 18:32:55 +08:00
|
|
|
|
net_socket_client.KeyToken = CommonHeadCode.KeyToken;//新增的身份令牌
|
2017-02-22 14:30:10 +08:00
|
|
|
|
net_socket_client.EndPointServer = new System.Net.IPEndPoint(
|
|
|
|
|
|
System.Net.IPAddress.Parse(UserClient.ServerIp),
|
|
|
|
|
|
CommonLibrary.CommonLibrary.Port_Main_Net);
|
2017-05-24 21:06:27 +08:00
|
|
|
|
net_socket_client.ClientAlias = $"{UserClient.UserAccount.UserName} ({UserClient.UserAccount.Factory})";//标记客户端在线的名称
|
2017-02-22 14:30:10 +08:00
|
|
|
|
net_socket_client.ClientStart();
|
|
|
|
|
|
}
|
2017-05-30 17:38:35 +08:00
|
|
|
|
catch (Exception ex)
|
2017-02-22 14:30:10 +08:00
|
|
|
|
{
|
|
|
|
|
|
SoftBasic.ShowExceptionMessage(ex);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-06-16 09:52:58 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 接收到服务器的字节数据的回调方法
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="state">网络连接对象</param>
|
|
|
|
|
|
/// <param name="customer">用户自定义的指令头,用来区分数据用途</param>
|
|
|
|
|
|
/// <param name="data">数据</param>
|
|
|
|
|
|
private void Net_socket_client_AcceptString(AsyncStateOne state, int customer, string data)
|
2017-02-22 14:30:10 +08:00
|
|
|
|
{
|
2017-06-16 09:52:58 +08:00
|
|
|
|
if (customer == CommonHeadCode.MultiNetHeadCode.弹窗新消息)
|
2017-02-22 14:30:10 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
|
|
|
|
|
{
|
2017-06-16 09:52:58 +08:00
|
|
|
|
FormPopup fpp = new FormPopup(data, Color.DodgerBlue, 10000);
|
2017-02-22 14:30:10 +08:00
|
|
|
|
fpp.Show();
|
|
|
|
|
|
}));
|
|
|
|
|
|
}
|
2017-06-16 09:52:58 +08:00
|
|
|
|
else if (customer == CommonHeadCode.MultiNetHeadCode.总在线信息)
|
2017-02-22 14:30:10 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
|
|
|
|
|
{
|
2017-06-16 09:52:58 +08:00
|
|
|
|
listBox1.DataSource = data.Split('#');
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}));
|
|
|
|
|
|
}
|
2017-06-16 09:52:58 +08:00
|
|
|
|
else if (customer == CommonHeadCode.MultiNetHeadCode.关闭客户端)
|
2017-02-22 14:30:10 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
Close();
|
|
|
|
|
|
}));
|
|
|
|
|
|
}
|
2017-06-16 09:52:58 +08:00
|
|
|
|
else if (customer == CommonHeadCode.SimplifyHeadCode.更新公告)
|
2017-02-22 14:30:10 +08:00
|
|
|
|
{
|
|
|
|
|
|
//此处应用到了同步类的指令头
|
|
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
|
|
|
|
|
{
|
2017-06-16 09:52:58 +08:00
|
|
|
|
UserClient.Announcement = data;
|
|
|
|
|
|
label_Announcement.Text = data;
|
|
|
|
|
|
FormPopup fpp = new FormPopup(data, Color.DodgerBlue, 10000);
|
2017-02-22 14:30:10 +08:00
|
|
|
|
fpp.Show();
|
|
|
|
|
|
}));
|
|
|
|
|
|
}
|
2017-06-16 09:52:58 +08:00
|
|
|
|
else if (customer == CommonHeadCode.MultiNetHeadCode.初始化数据)
|
2017-03-06 21:10:38 +08:00
|
|
|
|
{
|
2017-04-06 16:18:46 +08:00
|
|
|
|
//收到服务器的数据
|
2017-06-16 09:52:58 +08:00
|
|
|
|
JObject json = JObject.Parse(data);
|
2017-04-06 16:18:46 +08:00
|
|
|
|
UserClient.DateTimeServer = json["Time"].ToObject<DateTime>();
|
2017-06-20 11:26:40 +08:00
|
|
|
|
List<string> chats = JArray.Parse(json["chats"].ToString()).ToObject<List<string>>();
|
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
|
chats.ForEach(m => { sb.Append(m + Environment.NewLine); });
|
2017-03-06 21:10:38 +08:00
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
2017-05-30 17:38:35 +08:00
|
|
|
|
{
|
|
|
|
|
|
toolStripStatusLabel_time.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm");
|
|
|
|
|
|
label_file_count.Text = json["FileCount"].ToObject<int>().ToString();
|
2017-06-20 11:26:40 +08:00
|
|
|
|
UIControls_Chat.AddChatsHistory(sb.ToString());
|
2017-05-30 17:38:35 +08:00
|
|
|
|
}));
|
2017-03-06 21:10:38 +08:00
|
|
|
|
}
|
2017-06-16 09:52:58 +08:00
|
|
|
|
else if (customer == CommonHeadCode.MultiNetHeadCode.文件总数量)
|
2017-04-08 16:03:52 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
|
|
|
|
|
{
|
2017-06-16 09:52:58 +08:00
|
|
|
|
label_file_count.Text = data;
|
2017-05-18 17:13:42 +08:00
|
|
|
|
}));
|
|
|
|
|
|
}
|
2017-06-16 09:52:58 +08:00
|
|
|
|
else if (customer == CommonHeadCode.MultiNetHeadCode.留言版消息)
|
2017-05-18 17:13:42 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
|
|
|
|
|
{
|
2017-06-16 09:52:58 +08:00
|
|
|
|
UIControls_Chat?.DealwithReceive(data);
|
2017-04-08 16:03:52 +08:00
|
|
|
|
}));
|
|
|
|
|
|
}
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-06-16 09:52:58 +08:00
|
|
|
|
private void Net_socket_client_AcceptByte(AsyncStateOne object1, int customer, byte[] object2)
|
2017-02-22 14:30:10 +08:00
|
|
|
|
{
|
|
|
|
|
|
//接收到服务器发来的字节数据
|
2017-03-04 17:07:26 +08:00
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
|
|
|
|
|
{
|
2017-06-16 09:52:58 +08:00
|
|
|
|
MessageBox.Show(customer.ToString());
|
2017-03-04 17:07:26 +08:00
|
|
|
|
}));
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Net_socket_client_LoginSuccess()
|
|
|
|
|
|
{
|
|
|
|
|
|
//登录成功,或重新登录成功的事件,有些数据的初始化可以放在此处
|
|
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
toolStripStatusLabel_status.Text = "客户端启动成功";
|
|
|
|
|
|
}));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Net_socket_client_LoginFailed(int object1)
|
|
|
|
|
|
{
|
|
|
|
|
|
//登录失败的情况,如果连续三次连接失败,请考虑退出系统
|
|
|
|
|
|
if (object1 > 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
Close();
|
|
|
|
|
|
}));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Net_socket_client_MessageAlerts(string object1)
|
|
|
|
|
|
{
|
|
|
|
|
|
//信息提示
|
|
|
|
|
|
if (IsHandleCreated) Invoke(new Action(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
toolStripStatusLabel_status.Text = object1;
|
|
|
|
|
|
}));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-03-31 20:23:48 +08:00
|
|
|
|
|
2017-02-22 14:30:10 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
2017-04-04 16:24:17 +08:00
|
|
|
|
#region 主界面管理块
|
2017-04-06 22:00:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 文件显示的控件
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private UIControls.ShareFilesRender UIControls_Files { get; set; }
|
|
|
|
|
|
|
2017-05-18 17:13:42 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 用于聊天的控件
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private UIControls.OnlineChatRender UIControls_Chat { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-04-06 22:00:34 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-04-04 16:24:17 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 所有在主界面显示的控件集
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private List<UserControl> all_main_render = new List<UserControl>();
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 正在显示的子界面
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private UserControl CurrentRender { get; set; } = null;
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 主界面的初始化
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private void MainRenderInitialization()
|
|
|
|
|
|
{
|
|
|
|
|
|
//将所有的子集控件添加进去
|
2017-04-06 22:00:34 +08:00
|
|
|
|
|
2017-05-06 12:54:57 +08:00
|
|
|
|
/*******************************************************************************
|
|
|
|
|
|
*
|
2017-04-06 22:00:34 +08:00
|
|
|
|
* 例如此处展示了文件控件是如何添加进去的
|
|
|
|
|
|
* 1.先进行实例化,赋值初始参数
|
|
|
|
|
|
* 2.添加进项目
|
|
|
|
|
|
* 3.显示
|
2017-05-06 12:54:57 +08:00
|
|
|
|
*
|
|
|
|
|
|
*******************************************************************************/
|
2017-04-06 22:00:34 +08:00
|
|
|
|
|
|
|
|
|
|
UIControls_Files = new UIControls.ShareFilesRender()
|
|
|
|
|
|
{
|
2017-05-06 12:54:57 +08:00
|
|
|
|
Visible = false,
|
|
|
|
|
|
Parent = panel_main,//决定了放在哪个界面显示,此处示例
|
|
|
|
|
|
Dock = DockStyle.Fill,
|
2017-04-06 22:00:34 +08:00
|
|
|
|
};
|
|
|
|
|
|
all_main_render.Add(UIControls_Files);
|
2017-05-18 17:13:42 +08:00
|
|
|
|
|
|
|
|
|
|
UIControls_Chat = new UIControls.OnlineChatRender((m) =>
|
|
|
|
|
|
{
|
2017-06-16 09:52:58 +08:00
|
|
|
|
net_socket_client.Send(CommonHeadCode.MultiNetHeadCode.留言版消息, m);
|
2017-05-18 17:13:42 +08:00
|
|
|
|
})
|
|
|
|
|
|
{
|
|
|
|
|
|
Visible = false,
|
|
|
|
|
|
Parent = panel_main,//决定了放在哪个界面显示,此处示例
|
|
|
|
|
|
Dock = DockStyle.Fill,
|
|
|
|
|
|
};
|
|
|
|
|
|
all_main_render.Add(UIControls_Chat);
|
|
|
|
|
|
|
2017-04-04 16:24:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void SetShowRenderControl(UserControl control)
|
|
|
|
|
|
{
|
2017-05-30 17:38:35 +08:00
|
|
|
|
if (!ReferenceEquals(CurrentRender, control))
|
2017-04-04 16:24:17 +08:00
|
|
|
|
{
|
|
|
|
|
|
CurrentRender = control;
|
|
|
|
|
|
all_main_render.ForEach(c => c.Visible = false);
|
|
|
|
|
|
control.Visible = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
private void SetShowRenderControl(Type typeControl)
|
|
|
|
|
|
{
|
|
|
|
|
|
UserControl control = null;
|
2017-05-30 17:38:35 +08:00
|
|
|
|
foreach (var c in all_main_render)
|
2017-04-04 16:24:17 +08:00
|
|
|
|
{
|
2017-05-30 17:38:35 +08:00
|
|
|
|
if (c.GetType() == typeControl)
|
2017-04-04 16:24:17 +08:00
|
|
|
|
{
|
|
|
|
|
|
control = c;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (control != null) SetShowRenderControl(control);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-04-06 22:00:34 +08:00
|
|
|
|
private void label_file_count_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-05-30 16:33:14 +08:00
|
|
|
|
//点击查看了共享文件
|
2017-04-06 22:00:34 +08:00
|
|
|
|
SetShowRenderControl(UIControls_Files);
|
|
|
|
|
|
UIControls_Files.UpdateFiles();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-06-05 17:32:46 +08:00
|
|
|
|
#endregion
|
2017-05-30 17:38:35 +08:00
|
|
|
|
|
2017-06-07 16:20:40 +08:00
|
|
|
|
#region Udp发送示例
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 调用该方法并指定参数即可,最长字符串不得
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="data"></param>
|
2017-06-16 09:52:58 +08:00
|
|
|
|
private void SendServerUdpData(int customer, string data)
|
2017-06-07 16:20:40 +08:00
|
|
|
|
{
|
|
|
|
|
|
//测试发送udp消息
|
2017-06-16 09:52:58 +08:00
|
|
|
|
UserClient.Net_Udp_Client.SendMessage(customer, data);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 后台计数线程
|
|
|
|
|
|
|
|
|
|
|
|
/*********************************************************************************************
|
|
|
|
|
|
*
|
|
|
|
|
|
* 说明 一个后台线程,用来执行一些周期执行的东西
|
|
|
|
|
|
* 注意 它不仅执行每秒触发的代码,也支持每分钟,每天,每月,每年等等
|
|
|
|
|
|
*
|
|
|
|
|
|
********************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 初始化后台的计数线程
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void TimeTickInitilization()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
Thread thread = new Thread(new ThreadStart(ThreadTimeTick));
|
|
|
|
|
|
thread.IsBackground = true;
|
|
|
|
|
|
thread.Start();
|
2017-06-07 16:20:40 +08:00
|
|
|
|
}
|
2017-06-06 10:43:04 +08:00
|
|
|
|
|
2017-06-16 09:52:58 +08:00
|
|
|
|
public void ThreadTimeTick()
|
|
|
|
|
|
{
|
|
|
|
|
|
Thread.Sleep(300);//加一个微小的延时
|
|
|
|
|
|
int second = DateTime.Now.Second - 1;
|
|
|
|
|
|
int minute = -1;
|
|
|
|
|
|
int hour = -1;
|
|
|
|
|
|
int day = -1;
|
|
|
|
|
|
Action DTimeShow = delegate
|
|
|
|
|
|
{
|
|
|
|
|
|
//显示服务器的时间和当前网络的延时时间,通常为毫秒
|
|
|
|
|
|
toolStripStatusLabel_time.Text = net_socket_client.ServerTime.ToString("yyyy-MM-dd HH:mm:ss") + $"({net_socket_client.DelayTime}ms)";
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
while (IsWindowShow)
|
|
|
|
|
|
{
|
|
|
|
|
|
while (DateTime.Now.Second == second)
|
|
|
|
|
|
{
|
|
|
|
|
|
Thread.Sleep(20);
|
|
|
|
|
|
}
|
|
|
|
|
|
second = DateTime.Now.Second;
|
|
|
|
|
|
if (IsWindowShow && IsHandleCreated) Invoke(DTimeShow);
|
|
|
|
|
|
//每秒钟执行的代码
|
|
|
|
|
|
UserClient.DateTimeServer = net_socket_client.ServerTime;
|
|
|
|
|
|
|
|
|
|
|
|
if (second == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
//每个0秒执行的代码
|
|
|
|
|
|
}
|
|
|
|
|
|
if (minute != DateTime.Now.Minute)
|
|
|
|
|
|
{
|
|
|
|
|
|
minute = DateTime.Now.Minute;
|
|
|
|
|
|
//每分钟执行的代码
|
|
|
|
|
|
}
|
|
|
|
|
|
if (hour != DateTime.Now.Hour)
|
|
|
|
|
|
{
|
|
|
|
|
|
hour = DateTime.Now.Hour;
|
|
|
|
|
|
//每小时执行的代码
|
|
|
|
|
|
}
|
|
|
|
|
|
if (day != DateTime.Now.Day)
|
|
|
|
|
|
{
|
|
|
|
|
|
day = DateTime.Now.Day;
|
|
|
|
|
|
//每天执行的代码
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-07-02 10:29:48 +08:00
|
|
|
|
|
2017-07-06 22:04:52 +08:00
|
|
|
|
|
2017-06-07 16:20:40 +08:00
|
|
|
|
#endregion
|
2017-06-17 18:36:29 +08:00
|
|
|
|
|
2017-07-06 22:04:52 +08:00
|
|
|
|
#region 头像图片上传下载块
|
|
|
|
|
|
|
|
|
|
|
|
private string GetPortraitPath()
|
|
|
|
|
|
{
|
|
|
|
|
|
string path = Application.StartupPath + @"\Portrait\" + UserClient.UserAccount.UserName;
|
|
|
|
|
|
if (!System.IO.Directory.Exists(path))
|
|
|
|
|
|
{
|
|
|
|
|
|
System.IO.Directory.CreateDirectory(path);
|
|
|
|
|
|
}
|
|
|
|
|
|
return path;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ChangePortrait()
|
|
|
|
|
|
{
|
|
|
|
|
|
using (FormPortraitSelect fps = new FormPortraitSelect())
|
|
|
|
|
|
{
|
|
|
|
|
|
if (fps.ShowDialog() == DialogResult.OK)
|
|
|
|
|
|
{
|
|
|
|
|
|
string path = GetPortraitPath();
|
|
|
|
|
|
|
|
|
|
|
|
string guid = Guid.NewGuid().ToString("N");
|
2017-07-07 10:18:28 +08:00
|
|
|
|
string path300 = path + @"\" + PortraitSupport.LargePortrait;
|
|
|
|
|
|
string path32 = path + @"\" + PortraitSupport.SmallPortrait;
|
2017-07-06 22:04:52 +08:00
|
|
|
|
|
2017-07-07 10:18:28 +08:00
|
|
|
|
Bitmap bitmap300 = fps.GetSpecifiedSizeImage(300);
|
2017-07-06 22:04:52 +08:00
|
|
|
|
bitmap300.Save(path300);
|
2017-07-07 10:18:28 +08:00
|
|
|
|
Bitmap bitmap32 = fps.GetSpecifiedSizeImage(32);
|
2017-07-06 22:04:52 +08:00
|
|
|
|
bitmap32.Save(path32);
|
|
|
|
|
|
//传送服务器
|
|
|
|
|
|
bitmap300.Dispose();
|
|
|
|
|
|
bitmap32.Dispose();
|
|
|
|
|
|
|
|
|
|
|
|
using (FormFileOperate ffo = new FormFileOperate(CommonHeadCode.KeyToken, new System.Net.IPEndPoint(
|
|
|
|
|
|
System.Net.IPAddress.Parse(UserClient.ServerIp), CommonLibrary.CommonLibrary.Port_Portrait_Server),
|
|
|
|
|
|
new string[]
|
|
|
|
|
|
{
|
|
|
|
|
|
path300,
|
|
|
|
|
|
path32
|
|
|
|
|
|
}, "Files", "Portrait", UserClient.UserAccount.UserName))
|
|
|
|
|
|
{
|
|
|
|
|
|
ffo.ShowDialog();
|
|
|
|
|
|
}
|
|
|
|
|
|
DownloadUserPortraint();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void DownloadUserPortraint()
|
|
|
|
|
|
{
|
|
|
|
|
|
string path = GetPortraitPath();
|
|
|
|
|
|
//获取服务器文件名称
|
|
|
|
|
|
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.请求小头, UserClient.UserAccount.UserName);
|
|
|
|
|
|
if(result.IsSuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(result.Content[0]=='Y')
|
|
|
|
|
|
{
|
|
|
|
|
|
//服务器存在头像
|
2017-07-07 10:18:28 +08:00
|
|
|
|
string fileName = path + @"\" + PortraitSupport.SmallPortrait;
|
|
|
|
|
|
string FileMd5 = result.Content.Substring(1);
|
|
|
|
|
|
if (System.IO.File.Exists(fileName))
|
2017-07-06 22:04:52 +08:00
|
|
|
|
{
|
2017-07-07 10:18:28 +08:00
|
|
|
|
//文件文件
|
|
|
|
|
|
string currentMd5 = SoftBasic.CalculateFileMD5(fileName);
|
|
|
|
|
|
if (currentMd5 == FileMd5)
|
2017-07-06 22:04:52 +08:00
|
|
|
|
{
|
|
|
|
|
|
//加载本地头像
|
|
|
|
|
|
pictureBox1.LoadAsync(fileName);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//头像已经换了
|
2017-07-07 10:18:28 +08:00
|
|
|
|
DownloadUserPortraint(path);
|
2017-07-06 22:04:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//客户端不存在头像
|
2017-07-07 10:18:28 +08:00
|
|
|
|
DownloadUserPortraint(path);
|
2017-07-06 22:04:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//服务器不存在头像,本次加载结束
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-07-07 10:18:28 +08:00
|
|
|
|
private void DownloadUserPortraint(string path)
|
|
|
|
|
|
{
|
|
|
|
|
|
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.下载小头, UserClient.UserAccount.UserName);
|
|
|
|
|
|
if (result.IsSuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (result.Content[0] == 'Y')
|
|
|
|
|
|
{
|
|
|
|
|
|
byte[] data = Convert.FromBase64String(result.Content.Substring(1));
|
|
|
|
|
|
string path32 = path + @"\" + PortraitSupport.SmallPortrait;
|
|
|
|
|
|
System.IO.File.WriteAllBytes(path32, data);
|
|
|
|
|
|
pictureBox1.LoadAsync(path32);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void pictureBox1_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
//点击了头像,请求下载高清版本头像
|
|
|
|
|
|
using (FormMatterRemind fmr = new FormMatterRemind("正在下载图片", ThreadPoolDownloadSizeLarge))
|
|
|
|
|
|
{
|
|
|
|
|
|
fmr.ShowDialog();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ThreadPoolDownloadSizeLarge()
|
|
|
|
|
|
{
|
|
|
|
|
|
string path = GetPortraitPath();
|
|
|
|
|
|
OperateResultString result = UserClient.Net_simplify_client.ReadFromServer(CommonHeadCode.SimplifyHeadCode.下载大头, UserClient.UserAccount.UserName);
|
|
|
|
|
|
if (result.IsSuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (result.Content[0] == 'Y')
|
|
|
|
|
|
{
|
|
|
|
|
|
byte[] data = Convert.FromBase64String(result.Content.Substring(1));
|
|
|
|
|
|
string path32 = path + @"\" + PortraitSupport.SmallPortrait;
|
|
|
|
|
|
System.IO.File.WriteAllBytes(path32, data);
|
|
|
|
|
|
System.Diagnostics.Process.Start(path32);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
Thread.Sleep(1000);
|
|
|
|
|
|
}
|
2017-07-06 22:04:52 +08:00
|
|
|
|
|
|
|
|
|
|
#endregion
|
2017-07-07 10:18:28 +08:00
|
|
|
|
|
|
|
|
|
|
|
2017-02-22 14:30:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|