前奏如何分别与用户打开多个聊天窗体,但是会阻止已经打开的窗体?
起初,对不起我的英语不好。 :)
我读过类似问题的语气,但没有一个提供了解决方案,我的问题,或者我只是愚蠢的。 :)
问题
我怎么会打开一个新的聊天形式User1
交谈,并保留打开从“用户列表”中的其他用户聊天形式的可能性,但块打开一个聊天的形式与已经打开的用户?
我试图找到这个东西,但无论我尝试,它总是相同的(我可以一次又一次地打开相同的形式)。因此,例如,我可以用User1
打开一个聊天表单,我可以与他交谈,也可以用User2
打开一个新的聊天表单,我可以与他交谈。但我也可以打开多个窗体与User1和User2以及等
另外,我需要通过一些数据从MainForm
形式TalkForm
,所以作为原型我创建此代码,我试图列出,但我“M不知道如何来检查形式确实在列表中存在:
List<TalkForm> b = new List<TalkForm>();
private void TextBoxConnectedClients_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (TextBoxConnectedClients.SelectedIndex == -1)
{
return;
}
int index = this.TextBoxConnectedClients.IndexFromPoint(e.Location);
if (index != System.Windows.Forms.ListBox.NoMatches)
{
string username = TextBoxConnectedClients.SelectedItem.ToString();
TalkForm a = new TalkForm(im, username, displayname);
b.Add(a);
a.Show();
}
}
可有人请给我一些例子或者告诉我什么,我做错了什么?谢谢。
得到这个错误: '“无法隐式转换类型‘字符串’到‘布尔’”' '不能lambda表达式转换为预期的委托类型,因为一些块的返回类型不 隐式转换为代理返回类型“' – Gogo
我的不好。单一'='比较是一个罪魁祸首。更新上面的代码。 – niksofteng
你也可以添加一个else语句,而不是调用当前聊天窗口到前面,使用['Control.BringToFront'](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.bringtofront.aspx): 'TalkForm form = b.firstOrDefault(t = > t.Username == username); if(form!= null){form; BringToFront();}' – Draken