将IMail对象转移到另一个表单

时间:2017-08-28 21:34:12

标签: c#

有一个接收字母的功能:

 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);
                }
            }
        }

我尝试传递给IMAIL objecto oher表单的另一种形式:

    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();

    }

但我收到错误:

  

无法访问清算对象。   对象名称:“ClientBase”。

1 个答案:

答案 0 :(得分:0)

您的throwExceptions变量看起来像是一个类成员。问题在于:

imap

...在using (imap = new Imap()) 中。当button1_Click()代码块结束时,您的using()对象将被释放。当您在imap中再次尝试使用它时,它已经消失了。您需要不在button2_Click()中处置对象或创建新的imap对象。