dataGridView により、メール本文受信 |
- 日時: 2011/03/02 10:57
- 名前: 談
- いつもお世話になっております。談です。
おかけ様です。DataGridViewにメールタイトル等の表示ができました。 次の山が datagridview をクリークにより、本文の受信です。
すみません、長すぎで、可能すれば、是非アドバイスを頂きたいです。
よろしくお願いします。
サンプルForm1.cs に対して、主な修正の修正内容 1.Form1 に dataGridView1 追加 2.public class MailItem : System.Windows.Forms.ListViewItem →public class MailItem : System.Windows.Forms.DataGridViewRow 3.新規 public MailItem(TKMP.Net.MailData MailData, System.Windows.Forms.DataGridViewRow gdvr)
問題 何を修正すれば、dataGridView1をクリークした後、メール本文の受信が可能ですか
エラー場所 private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) に MailItem mi = (MailItem)lvi;
以下のソースがサンプルソースにより修正された【Form1.cs】ものです。
---------------------------------------------------------------------------------- private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { System.Windows.Forms.DataGridViewRow lvi = dataGridView1.Rows[e.RowIndex]; if (lvi == null) { return; } MailItem mi = (MailItem)lvi;
//受信未完了時にメール全文を受信する if (mi.MailData.DataStream == null) { mi.MailData.BodyDataReceive += new TKMP.Net.DataReceiveHandler(MailData_DataReceive); bool GetFlag = mi.MailData.ReadBody(); mi.MailData.BodyDataReceive -= new TKMP.Net.DataReceiveHandler(MailData_DataReceive); if (!GetFlag) { return; } }
//リーダークラスへ受信したメールデータを渡す TKMP.Reader.MailReader re = new TKMP.Reader.MailReader(mi.MailData.DataStream, false);
//メールの本文をテキストボックスに表示 this.textBox1.Text = re.MainText; }
}
/// <summary> /// メール情報を保持しているリストビューアイテム /// </summary> //public class MailItem : System.Windows.Forms.ListViewItem public class MailItem : System.Windows.Forms.DataGridViewRow { /// <summary> /// メール情報 /// </summary> public readonly TKMP.Net.MailData MailData; /// <summary> /// コンストラクタ 作成時にメール情報を登録する /// </summary> /// <param name="MailData"></param> public MailItem(TKMP.Net.MailData MailData) { //プライベート情報として保存 this.MailData = MailData;
//ヘッダーの受信を行う if (!this.MailData.ReadHeader()) { return; }
//datagridview 変更の為、以下のソース中止 begin
//リーダークラスへ受信したストリームを渡す //TKMP.Reader.MailReader re = new TKMP.Reader.MailReader(this.MailData.HeaderStream, false); //リストビューへ情報を表示 //this.SubItems.Add(new TKMP.Reader.Header.DateTime(re).Value.ToString("yyyy/MM/dd HH:mm")); //this.SubItems.Add(re.HeaderCollection["From"]); //this.SubItems.Add(re.HeaderCollection["Subject"]);
//datagridview 変更の為、以下のソース中止 end
}
public MailItem(TKMP.Net.MailData MailData, System.Windows.Forms.DataGridViewRow gdvr) { //プライベート情報として保存 this.MailData = MailData;
//ヘッダーの受信を行う if (!this.MailData.ReadHeader()) { return; }
//リーダークラスへ受信したストリームを渡す TKMP.Reader.MailReader re = new TKMP.Reader.MailReader(this.MailData.HeaderStream, false); //datagridview へ情報を表示 gdvr.Cells[0].Value = new TKMP.Reader.Header.DateTime(re).Value.ToString("yyyy/MM/dd HH:mm"); gdvr.Cells[1].Value = re.HeaderCollection["From"]; gdvr.Cells[2].Value = re.HeaderCollection["Subject"];
} } }
|
|