public void SetTarget(MessageTarget target) { if (this._target.InvokeRequired) { this._target.BeginInvoke(new SetTargetDelegate(SetTarget), new object[] { target }); return; } // Focus input this._inputBox.Focus(); this._inputBox.Select(this._inputBox.Text.Length, 0); // Check if the target already exists in our list foreach (object t in this._target.Items) { MessageTarget ct = (MessageTarget)t; if (!ct.Equals(target)) { continue; } this._target.SelectedItem = t; return; } // Add new target int index = 0; foreach (MessageTarget t in this._target.Items) { if (t.Target.CompareTo(target.Target) > 0) { this._target.Items.Insert(index, target); this._target.SelectedIndex = index; return; } index++; } index = this._target.Items.Add(target); this._target.SelectedIndex = index; }