私のwinフォームアプリには、リストボックスとテキストボックスがあり、アプリはサーバーからメールを取得し、リストボックスに件名などを表示します。リストボックスをクリックすると、本文がテキストボックスに表示されます。問題は、選択したインデックス変更イベントで以下のコード全体を繰り返して動作させる必要があることです。そうしないと、「現在のコンテキストに存在しません」というエラーが発生し、アプリの速度が低下します。
// Create an object, connect to the IMAP server, login,
// and select a mailbox.
Chilkat.Imap imap = new Chilkat.Imap();
imap.UnlockComponent("");
imap.Port = 993;
imap.Ssl = true;
imap.Connect("imap.gmail.com");
imap.Login("user@email.com", "pass");
imap.SelectMailbox("Inbox");
// Get a message set containing all the message IDs
// in the selected mailbox.
Chilkat.MessageSet msgSet;
msgSet = imap.Search("ALL", true);
// Fetch all the mail into a bundle object.
Chilkat.EmailBundle bundle = new Chilkat.EmailBundle();
bundle = imap.FetchBundle(msgSet);
// Loop over the bundle and display the From and Subject.
Chilkat.Email email;
int i;
for (i = 0; i < bundle.MessageCount - 1; i++)
{
email = bundle.GetEmail(i);
listView1.Items.Add(email.From + ": " + email.Subject).Tag = i;
richTextBox1.Text = email.Body;
}
// Save the email to an XML file
bundle.SaveXml("bundle.xml");
選択したインデックス変更イベントで動作させたいコードは次のとおりです。
if (listView1.SelectedItems.Count > 0)
{
richTextBox1.Text = bundle.GetEmail((int)listView1.SelectedItems[0].Tag).Body;
}
このコードを使用すると、「現在のコンテキストにバンドルが存在しません」というエラーが表示されます。このエラーを修正するにはどうすればよいですか?