修复winform客户端在线账户显示的滚动条BUG,v1.6.10

This commit is contained in:
dathlin
2017-10-11 09:59:58 +08:00
parent ac410692c1
commit 1a85ef8588
5 changed files with 38 additions and 41 deletions

View File

@@ -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)
{

View File

@@ -36,7 +36,7 @@ namespace ClientsLibrary
/// <summary>
/// 本软件的当前版本,用来验证更新的关键依据
/// </summary>
public static SystemVersion CurrentVersion { get; } = new SystemVersion("1.0.0.171010");
public static SystemVersion CurrentVersion { get; } = new SystemVersion("1.0.0.171011");
/// <summary>

View File

@@ -45,7 +45,7 @@ namespace CommonLibrary
*
**************************************************************************/
SoftBasic.FrameworkVersion = new SystemVersion("1.6.9");
SoftBasic.FrameworkVersion = new SystemVersion("1.6.10");
}

View File

@@ -406,6 +406,7 @@ namespace 软件系统客户端Wpf
private NetComplexClient net_socket_client = new NetComplexClient();
private void Net_Socket_Client_Initialization()
{
try
@@ -490,8 +491,6 @@ namespace 软件系统客户端Wpf
TextBlock_FileCount.Text = json["FileCount"].ToObject<int>().ToString();
UIControls_Chat.AddChatsHistory(sb.ToString());
ClientsOnline.Children.Clear();
NetAccount[] accounts = JArray.Parse(json["ClientsOnline"].ToString()).ToObject<NetAccount[]>();
foreach (var m in accounts)

View File

@@ -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<AsyncStateOne>(Net_socket_server_ClientOnline);//客户端上线触发
net_socket_server.ClientOffline += new NetBase.IEDelegate<AsyncStateOne, string>(Net_socket_server_ClientOffline);//客户端下线触发,包括异常掉线
net_socket_server.AllClientsStatusChange += new NetBase.IEDelegate<string>(Net_socket_server_AllClientsStatusChange);//客户端上下线变化时触发
net_socket_server.MessageAlerts += new NetBase.IEDelegate<string>(Net_socket_server_MessageAlerts);//服务器产生提示消息触发
net_socket_server.AcceptByte += new NetBase.IEDelegate<AsyncStateOne, NetHandle, byte[]>(Net_socket_server_AcceptByte);//服务器接收到字节数据触发
net_socket_server.AcceptString += new NetBase.IEDelegate<AsyncStateOne, NetHandle, string>(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<AsyncStateOne>(Net_socket_server_ClientOnline);// 客户端上线触发
net_socket_server.ClientOffline += new NetBase.IEDelegate<AsyncStateOne, string>(Net_socket_server_ClientOffline);// 客户端下线触发,包括异常掉线
net_socket_server.AllClientsStatusChange += new NetBase.IEDelegate<string>(Net_socket_server_AllClientsStatusChange);// 客户端上下线变化时触发
net_socket_server.MessageAlerts += new NetBase.IEDelegate<string>(Net_socket_server_MessageAlerts);// 服务器产生提示消息触发
net_socket_server.AcceptByte += new NetBase.IEDelegate<AsyncStateOne, NetHandle, byte[]>(Net_socket_server_AcceptByte);// 服务器接收到字节数据触发
net_socket_server.AcceptString += new NetBase.IEDelegate<AsyncStateOne, NetHandle, string>(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<NetAccount> OnlineClients = new List<NetAccount>();