diff --git a/ClientsLibrary/BasicSupport/NetClientOnline.cs b/ClientsLibrary/BasicSupport/NetClientOnline.cs index 971282a..e0f6608 100644 --- a/ClientsLibrary/BasicSupport/NetClientOnline.cs +++ b/ClientsLibrary/BasicSupport/NetClientOnline.cs @@ -63,17 +63,18 @@ namespace ClientsLibrary.BasicSupport if (index >= 0) { + int offect = MyControls[index].Height + 4; + Location_Y -= offect; MyControls[index].Dispose(); MyControls.RemoveAt(index); // 重新计算偏移 - - Location_Y = 0 - VerticalScroll.Value; - for (int i = 0; i < MyControls.Count; i++) + + for (int i = index; i < MyControls.Count; i++) { - MyControls[i].Location = new Point(2, Location_Y); - Location_Y += MyControls[i].Height + 4; + MyControls[i].Location = new Point(2, MyControls[i].Location.Y - offect); } + } label2.Text = MyControls.Count.ToString(); @@ -85,8 +86,8 @@ namespace ClientsLibrary.BasicSupport panel1.Controls.Add(item); // 添加显示 item.SetNetAccount(account); - item.Location = new Point(2, Location_Y); // 控件的位置 - int width = VerticalScroll.Visible ? Width - 4 - SystemInformation.VerticalScrollBarWidth : Width - 4; // 控件的宽度 + item.Location = new Point(2, Location_Y - panel1.VerticalScroll.Value); // 控件的位置 + int width = panel1.VerticalScroll.Visible ? Width - 4 - SystemInformation.VerticalScrollBarWidth : Width - 4; // 控件的宽度 item.Size = new Size(width, item.Size.Height); // 控件的大小 item.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; // 控件随窗口变化的样式 @@ -97,8 +98,6 @@ namespace ClientsLibrary.BasicSupport public void SetOnlineRender(NetAccount[] accounts) { SuspendLayout(); - //清楚缓存 - ClearControls(); if (accounts != null) { @@ -106,7 +105,6 @@ namespace ClientsLibrary.BasicSupport if (accounts.Length > 0 && Width > 20) { - int Location_Y = 0 - VerticalScroll.Value; //添加子控件 foreach (var m in accounts) { diff --git a/ClientsLibrary/UserClient.cs b/ClientsLibrary/UserClient.cs index 41c140b..5be5b78 100644 --- a/ClientsLibrary/UserClient.cs +++ b/ClientsLibrary/UserClient.cs @@ -36,7 +36,7 @@ namespace ClientsLibrary /// /// 本软件的当前版本,用来验证更新的关键依据 /// - public static SystemVersion CurrentVersion { get; } = new SystemVersion("1.0.0.171010"); + public static SystemVersion CurrentVersion { get; } = new SystemVersion("1.0.0.171011"); /// diff --git a/CommonLibrary/ProtocolSupport/CommonProtocol.cs b/CommonLibrary/ProtocolSupport/CommonProtocol.cs index c0b0a57..b26a321 100644 --- a/CommonLibrary/ProtocolSupport/CommonProtocol.cs +++ b/CommonLibrary/ProtocolSupport/CommonProtocol.cs @@ -45,7 +45,7 @@ namespace CommonLibrary * **************************************************************************/ - SoftBasic.FrameworkVersion = new SystemVersion("1.6.9"); + SoftBasic.FrameworkVersion = new SystemVersion("1.6.10"); } diff --git a/软件系统客户端Wpf/MainWindow.xaml.cs b/软件系统客户端Wpf/MainWindow.xaml.cs index 61dce35..3a5020b 100644 --- a/软件系统客户端Wpf/MainWindow.xaml.cs +++ b/软件系统客户端Wpf/MainWindow.xaml.cs @@ -406,6 +406,7 @@ namespace 软件系统客户端Wpf private NetComplexClient net_socket_client = new NetComplexClient(); + private void Net_Socket_Client_Initialization() { try @@ -489,9 +490,7 @@ namespace 软件系统客户端Wpf TextBlock_ServerTime.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm:ss"); TextBlock_FileCount.Text = json["FileCount"].ToObject().ToString(); UIControls_Chat.AddChatsHistory(sb.ToString()); - - - ClientsOnline.Children.Clear(); + NetAccount[] accounts = JArray.Parse(json["ClientsOnline"].ToString()).ToObject(); foreach (var m in accounts) diff --git a/软件系统服务端模版/FormServerWindow.cs b/软件系统服务端模版/FormServerWindow.cs index c3d56d7..1afa75b 100644 --- a/软件系统服务端模版/FormServerWindow.cs +++ b/软件系统服务端模版/FormServerWindow.cs @@ -906,17 +906,17 @@ namespace 软件系统服务端模版 { try { - net_socket_server.KeyToken = CommonProtocol.KeyToken;//设置身份令牌 - net_socket_server.LogNet =new LogNetSingle(LogSavePath + @"\net_log.txt"); - net_socket_server.LogNet.SetMessageDegree(HslMessageDegree.DEBUG);//默认debug及以上级别日志均进行存储,根据需要自行选择 - net_socket_server.FormatClientOnline = "#IP:{0} Name:{1}";//必须为#开头,具体格式可由自身需求确定 - net_socket_server.IsSaveLogClientLineChange = true;//设置客户端上下线是否记录到日志 - net_socket_server.ClientOnline += new NetBase.IEDelegate(Net_socket_server_ClientOnline);//客户端上线触发 - net_socket_server.ClientOffline += new NetBase.IEDelegate(Net_socket_server_ClientOffline);//客户端下线触发,包括异常掉线 - net_socket_server.AllClientsStatusChange += new NetBase.IEDelegate(Net_socket_server_AllClientsStatusChange);//客户端上下线变化时触发 - net_socket_server.MessageAlerts += new NetBase.IEDelegate(Net_socket_server_MessageAlerts);//服务器产生提示消息触发 - net_socket_server.AcceptByte += new NetBase.IEDelegate(Net_socket_server_AcceptByte);//服务器接收到字节数据触发 - net_socket_server.AcceptString += new NetBase.IEDelegate(Net_socket_server_AcceptString);//服务器接收到字符串数据触发 + net_socket_server.KeyToken = CommonProtocol.KeyToken; // 设置身份令牌 + net_socket_server.LogNet =new LogNetSingle(LogSavePath + @"\net_log.txt"); // 设置日志存储路径 + net_socket_server.LogNet.SetMessageDegree(HslMessageDegree.DEBUG); // 默认debug及以上级别日志均进行存储,根据需要自行选择 + net_socket_server.FormatClientOnline = "#IP:{0} Name:{1}"; // 必须为#开头,具体格式可由自身需求确定 + net_socket_server.IsSaveLogClientLineChange = true; // 设置客户端上下线是否记录到日志 + net_socket_server.ClientOnline += new NetBase.IEDelegate(Net_socket_server_ClientOnline);// 客户端上线触发 + net_socket_server.ClientOffline += new NetBase.IEDelegate(Net_socket_server_ClientOffline);// 客户端下线触发,包括异常掉线 + net_socket_server.AllClientsStatusChange += new NetBase.IEDelegate(Net_socket_server_AllClientsStatusChange);// 客户端上下线变化时触发 + net_socket_server.MessageAlerts += new NetBase.IEDelegate(Net_socket_server_MessageAlerts);// 服务器产生提示消息触发 + net_socket_server.AcceptByte += new NetBase.IEDelegate(Net_socket_server_AcceptByte);// 服务器接收到字节数据触发 + net_socket_server.AcceptString += new NetBase.IEDelegate(Net_socket_server_AcceptString);// 服务器接收到字符串数据触发 net_socket_server.ServerStart(CommonProtocol.Port_Main_Net); } catch (Exception ex) @@ -985,6 +985,21 @@ namespace 软件系统服务端模版 private void Net_socket_server_ClientOnline(AsyncStateOne object1) { + NetAccount account = new NetAccount + { + UserName = object1.LoginAlias, + Roles = UserServer.ServerRoles.GetRolesByUserName(object1.LoginAlias), + IpAddress = object1.IpAddress, + Alias = UserServer.ServerAccounts.GetAccountAlias(object1.LoginAlias), + Factory = UserServer.ServerAccounts.GetAccountFactory(object1.LoginAlias), + LoginTime = DateTime.Now, + UniqueId = object1.ClientUniqueID + }; + + net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.新用户上线, JObject.FromObject(account).ToString()); + + + AddOnlineClient(account); // 上线后回发一条数据初始化信息 JObject json = new JObject { @@ -997,21 +1012,6 @@ namespace 软件系统服务端模版 net_socket_server.Send(object1, CommonHeadCode.MultiNetHeadCode.初始化数据, json.ToString()); // 触发上下线功能 UserInterfaceMessageRender(DateTime.Now.ToString("MM-dd HH:mm:ss ") + object1.IpAddress + ":" + object1.LoginAlias + " 上线"); - - NetAccount account = new NetAccount(); - account.UserName = object1.LoginAlias; - account.Roles = UserServer.ServerRoles.GetRolesByUserName(object1.LoginAlias); - account.IpAddress = object1.IpAddress; - account.Alias = UserServer.ServerAccounts.GetAccountAlias(object1.LoginAlias); - account.Factory = UserServer.ServerAccounts.GetAccountFactory(object1.LoginAlias); - account.LoginTime = DateTime.Now; - account.UniqueId = object1.ClientUniqueID; - - AddOnlineClient(account); - - Thread.Sleep(100); - net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.新用户上线, JObject.FromObject(account).ToString()); - } private List OnlineClients = new List();