The project of U-WA-
http://uwa.potetihouse.com/
トップページ > 過去ログ > 記事閲覧
アイコン 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"];

}
}
}

Page: 1 |