public void SetClientRender(NetAccount account)
        {
            if (account != null)
            {
                netAccount    = account;
                UserName.Text = string.IsNullOrEmpty(account.Alias) ? account.UserName : account.Alias;
                Factory.Text  = $"({account.Factory})";

                Roles.Children.Clear();

                if (account.Roles?.Length > 0)
                {
                    foreach (var m in account.Roles)
                    {
                        TextBlock block = new TextBlock
                        {
                            Background = Brushes.LightSkyBlue,
                            Foreground = Brushes.Blue,
                            Margin     = new Thickness(0, 0, 4, 0),
                            Text       = m
                        };
                        Roles.Children.Add(block);
                    }
                }
                else
                {
                    Roles.Children.Add(new TextBlock());
                }

                // 启动线程池去显示头像
                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ThreadPoolLoadPortrait), account);
            }
        }
 /// <summary>
 /// 新增一个在线的客户端
 /// </summary>
 /// <param name="account"></param>
 public void AddOnlineClient(NetAccount account)
 {
     hybirdLock.Enter();
     OnlineClients.Add(account);
     m_ClientsOnlineCache = JArray.FromObject(OnlineClients).ToString();
     hybirdLock.Leave();
 }
        public void SetNetAccount(NetAccount account)
        {
            m_NetAccount = account;
            // 加载头像,显示信息
            label1.Text = (string.IsNullOrEmpty(account.Alias) ? account.UserName : account.Alias) + $" ({account.Factory})";

            ThreadPool.QueueUserWorkItem(ThreadPoolLoadPortrait, null);
        }
        public void ClientOnline(NetAccount account)
        {
            if (account != null)
            {
                AddControl(account);

                label2.Text = MyControls.Count.ToString();
            }
        }
Esempio n. 5
0
        // 新增一个用户账户到在线客户端
        private string AddOnLine(NetAccount item)
        {
            string result = string.Empty;

            lock (obj_lock)
            {
                all_accounts.Add(item);
                result = JArray.FromObject(all_accounts).ToString();
            }
            return(result);
        }
        private void AddControl(NetAccount account)
        {
            NetClientItem item = new NetClientItem();

            panel1.Controls.Add(item);
            // 添加显示
            item.SetNetAccount(account);
            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;                                      // 控件随窗口变化的样式

            Location_Y += item.Height + 4;                                                                                // 位置偏移
            MyControls.Add(item);
        }
Esempio n. 7
0
        private void ComplexServer_ClientOnline(AsyncStateOne object1)
        {
            // 客户端上线,发送消息给客户端
            complexServer.SendAllClients(1, object1.IpAddress + " " + object1.LoginAlias + " : 上线");
            // 发送在线信息
            NetAccount account = new NetAccount()
            {
                Guid       = object1.ClientUniqueID,
                Ip         = object1.IpAddress,
                Name       = object1.LoginAlias,
                OnlineTime = DateTime.Now.ToString(),
            };

            complexServer.SendAllClients(3, AddOnLine(account));

            // 在主界面显示信息
            ShowMsg(object1.IpAddress + " " + object1.LoginAlias + " : 上线");
            ShowOnlineClient( );
        }