2017-08-28 8 views
0

にIMailのオブジェクトを転送します。私はoherフォームobjecto IMAILに渡すしようと別の形態そこ手紙を受け取る機能がある別のフォーム

private void button1_Click(object sender, EventArgs e) 
     {   
      ListViewItem list = new ListViewItem("Messages"); 
      using (imap = new Imap()) 
      { 
       imap.ConnectSSL("imap.yandex.ru"); 
       imap.Login("----", "---"); 
       imap.SelectInbox(); 
       List<long> uids = imap.SearchFlag(Flag.All); 
       IMail email; 
       listView1.Items.Clear(); 
       foreach (long uid in uids) 
       { 
        ListViewItem lvi = new ListViewItem(); 
        email = new MailBuilder().CreateFromEml(imap.GetMessageByUID(uid));     
        lvi.SubItems.Add(email.Subject); 
        listView1.Items.Add(lvi); 
       } 
      } 
     } 

private void button2_Click(object sender, System.EventArgs e) 
    {//тут надо пулучать выбранный UID 

     //получим выделенный элемент 
     int SelectedMessageIndex = listView1.FocusedItem.Index; 
     IMail email2 = new MailBuilder().CreateFromEml(imap.GetMessageByUID(SelectedMessageIndex)); 
     MessageForm messageForm = new MessageForm(SelectedMessageIndex,email2); //нужно передать нужный email 
     messageForm.ShowDialog(); 

    } 

は、しかし、私は取得エラー:

Access to the liquidated object is not possible. Object name: "ClientBase".

答えて

0

変数がクラスメンバーであるようです。問題はこれにあります。

using (imap = new Imap()) 

... button1_Click()です。 using()コードブロックが終了すると、imapオブジェクトが破棄されます。 button2_Click()でもう一度使ってみるともう消えてしまいます。 button2_Click()にオブジェクトを破棄したり、新しいimapオブジェクトを作成したりする必要があります。

関連する問題