正在做一个类似QQ的程序,现在我有一个form3,是用来显示消息的。现在要实现点击一个好友就弹出一个form3,我把每个弹出的from3的name用好友的ID来命名:this.name=ID;现在有一个问题,请问能不能通过name来确定到底是哪个form3,比如我这个好友的聊天窗口已经打开了,我再双击这个好友的时候就不再新开一个窗口。还有就是收到好友消息的时候要显示到对应的form3里,请问如何解决?如果不是通过name的方法请问有没有其他方法?在此谢过

解决方案 »

  1.   

    可以,使用字典保存所有form3的实例,以name做key如
    Dictionary<string,form3> dict = new Dictionary<string,form3>();假设新的一个form3:(这是大意,请修改为自己的代码)
    form3 frm = new form3();
    frm.Name = friend.id; 
    dict.add(frm.Name,frm);将来查找时,根据好友id即可取出frm,可以把消息显示在该frm上如
    if(dict.Contains(friend.id))
    {
       form3 frm = dict[friend.id];
    }
      

  2.   

    简单整理一下//类的字段
    Dictionary <string,form3> dict = new Dictionary <string,form3>(); 
    //双击事件中代码
    form3 frm =null;
    if(dict.Contains(friend.id)) 

       //已打开聊天窗口
       form3 frm = dict[friend.id]; 
    }
    else
    {
       ////未打开聊天窗口
       frm = new form3(); 
       frm.Name = friend.id; 
       dict.add(frm.Name,frm); 
    }
    //继续你的工作
      

  3.   

    先去创建一个form实例然后在判断
    例如:
    Form3 form = new Form3();
    if (form.State==form.true)
    {
    return;
    }
    else 
    {
    form.Show();
    }
      

  4.   


    //类的字段
    Dictionary <string,form3> dict = new Dictionary <string,form3>(); 
    //双击事件中代码
    form3 frm =null;
    if(dict.ContainsKey(friend.id))  //修改了这里,漏了个Key

       //已打开聊天窗口
       form3 frm = dict[friend.id]; 
    }
    else
    {
       ////未打开聊天窗口
       frm = new form3(); 
       frm.Name = friend.id; 
       dict.add(frm.Name,frm); 
    }
    //继续你的工作