msn能来信息后弹出对话窗体,并能根据什么识别窗体的?如果是一个定死的窗体要最小化然后激活容易,但是msn这种弹出的窗体都继承于同一个,但是可以动态生成。请指教

解决方案 »

  1.   

    用对方的msn id来识别?
    如果msn id=A的窗体,已经存在,直接在该窗体,显示信息,
    不存在,创建一个新窗体,并显示.
    应该是这样的吧
      

  2.   

    就在Client socket receive事件里打开窗体(或者写在已有的窗体)就行了.
      

  3.   

    class MyForm : Form
    {
       static List<MyForm> formList = new List<MyForm>();
       string msn_id = string.empty;//写成属性吧,懒得写了.
       private MyForm(string id)
       {
           msn_id = id;
           
        }
       public static MyForm GetFormById(string id)
      {
          foreach(MyFrom my in formList)
          {
              if(my.msn_id == id)
                  return my;
          }
          MyForm newForm = new MyForm(id);
          formList.Add(newForm);
          return newForm;
       }
       //close的时候再从formList移除就行了,
    }//用的时候
    MyForm form1 = MyForm.GetFormbyId("hotmail");
    if (form1 != null)
    {
         ......
      

  4.   


    msn 不是直接弹出的么?还有要双击弹出的话那窗体存在,信息还得更新啊。还得去找这个窗体
      

  5.   

    如果是直接弹  要是四五个人 或者上十个人 一起给你发消息
    客户端怎么响应啊 - -#   experience sucks
      

  6.   

    异步的话,
    ReceiveData(Iar)//事件
    {
        //你的解码等等
        .....
        string msg = ".....";
        string senderMsnId = "[email protected]"; 
        MyForm form1 = MyForm.GetFormById(senderMsnId);
        if(form1 != null)
        {
           form1.Show();
           //或者你还有其他的操作.
        }
    }