public ReceivedMessageForm(TextMessageData textMessageData, UserInfo userInfo)
        {
            if (textMessageData == null)
            {
                throw new ArgumentNullException("textMessageData", "Something is wrong. TextMessageData should not be null.");
            }
            ReceivedTextMessageData = textMessageData;
            if (userInfo == null)
            {
                throw new Exception("Text message received from unknown user");
            }
            ReceivedUserInfo = userInfo;

            InitializeComponent();

            StringBuilder stringBuilder = new StringBuilder("Received message from ");
            stringBuilder.Append(ReceivedUserInfo.UserName);
            if (userInfo.LogOnName != ReceivedUserInfo.UserName)
            {
                stringBuilder.AppendFormat(" [{0}]", ReceivedUserInfo.LogOnName);
            }
            stringBuilder.AppendFormat(" ({0})", ReceivedUserInfo.MachineName);
            stringBuilder.AppendFormat("{0}at {1}", Environment.NewLine, ReceivedTextMessageData.ReceiptTime);

            MessegeInfoLabel.Text = stringBuilder.ToString();
            MessegeTextBox.Text = ReceivedTextMessageData.Text;
        }
 internal void ProcessUserInfoMessage(UserInfo userInfo, IPAddress remoteIP, bool IsReply)
 {
     if (userInfo == null)
     {
         return;
     }
     lock (UserInfos.SyncRoot)
     {
         if (UserInfos[userInfo.IPAddress] == null)
         {
             UserInfos[userInfo.IPAddress] = userInfo;
             NotifyObservers(userInfo);
         }
     }
     if (IsReply == false)
     {
         CommMgr.SendCurrentUserInfoMessage(remoteIP, true);
     }
 }
 private void NotifyObservers(UserInfo userInfo)
 {
     lock (Observers)
     {
         if (Observers == null || Observers.Count <= 0)
         {
             return;
         }
         foreach (IObserver observer in Observers)
         {
             observer.Notify(userInfo);
         }
     }
 }
        private void UpdateMenu(UserInfo userInfo)
        {
            DataRow dataRow = SendMenuSourceDataTable.NewRow();

            foreach (DataColumn column in SendMenuSourceDataTable.Columns)
            {
                if (column == null)
                {
                    continue;
                }
                switch (column.ColumnName)
                {
                    case IPAddress:
                        {
                            dataRow[IPAddress] = userInfo.IPAddress;
                        }
                        break;
                    case UserName:
                        {
                            dataRow[UserName] = userInfo.UserName;
                        }
                        break;
                    case Group:
                        {
                            dataRow[Group] = userInfo.Group;
                        }
                        break;
                    case MachineName:
                        {
                            dataRow[MachineName] = userInfo.MachineName;
                        }
                        break;
                    case LogOnName:
                        {
                            dataRow[LogOnName] = userInfo.LogOnName;
                        }
                        break;
                }
            }

            SendMenuSourceDataTable.LoadDataRow(dataRow.ItemArray, true);

            UpdateMemberCount();
        }