簡體   English   中英

將 Listview 數據導出到 email

[英]Exporting Listview data into an email

我需要一些幫助,從帶有一個子的列表視圖中提取數據到 email 中。 這可能嗎?最好的方法是什么?

我嘗試了以下但它給了我每個項目的消息並且沒有將它添加在一起所以我嘗試移動消息但它隨后出錯

StringBuilder sb;
        foreach (ListViewItem lvi in listView1.Items)
        {
            sb = new StringBuilder();

            foreach (ListViewItem.ListViewSubItem listViewSubItem in lvi.SubItems)
            {
                sb.Append(string.Format("{0}\t", listViewSubItem.Text));
            }

            MessageBox.Show(sb.ToString());
        }

(請你幫幫我,而不是把我記下來)

謝謝

您有多種選擇。 請注意,我沒有測試代碼,但它至少應該顯示該方法。

使用字符串生成器

在這里您只需 append 到您的消息並顯示結果

    var sb = new StringBuilder();
    foreach (ListViewItem lvi in listView1.Items)
    {
        foreach (ListViewItem.ListViewSubItem listViewSubItem in lvi.SubItems)
        {
            sb.Append(listViewSubItem.Text);
            sb.Append("\t");
        }
        sp.Append(Environment.NewLine);
    }
    MessageBox.Show(sb.ToString());

使用列表

這里我們拆分流程並在代碼中添加更多語義

    var lines = new List<string>();
    foreach (ListViewItem lvi in listView1.Items)
    {
        foreach (ListViewItem.ListViewSubItem listViewSubItem in lvi.SubItems)
        {
            lines.Add(string.Format("{0}\t", listViewSubItem.Text));
        }
    }
    MessageBox.Show(string.Join(Environment.NewLine, lines));

或者使用更少的樣板

在這里,我們嘗試以更易讀的方式編寫代碼。 (根據個人口味)

var lines = listView1.Items.Select(item => string.Join("\t", item.SubItems.Select(si => si.Text);
MessageBox.Show(string.Join(Environment.NewLine, lines));

表現

StringBuilder 應該是最快的。 其他示例創建了許多字符串實例,只是為了在創建完整消息后將它們丟棄。 這似乎與您的情況無關,但如果您要在循環中創建數千封郵件,請三思而后行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM