c# - 标记数组 c# winforms

标签 c# datagridview tags

下面的代码让我可以在 ListView 中显示收到的电子邮件,当所选索引发生更改时显示 RTB 中所选电子邮件的正文。问题是我更改了代码以使用数据 GridView ,但现在标记部分无法工作

void SomeFunc() // This line added by Jon
{
    int i;

    for (i = 0; i < bundle.MessageCount; i++)
    {
        email = bundle.GetEmail(i);

        ListViewItem itmp = new ListViewItem(email.From);
        ListViewItem.ListViewSubItem itms1 =
            new ListViewItem.ListViewSubItem(itmp, email.Subject);
        ListViewItem.ListViewSubItem itms2 =
            new ListViewItem.ListViewSubItem(itmp, email.FromName);
        itmp.SubItems.Add(itms1);
        itmp.SubItems.Add(itms2);

        listView1.Items.Add(itmp).Tag = i;

        richTextBox1.Text = email.Body;
    }

    // Save the email to an XML file
    bundle.SaveXml("email.xml");
}

private void listView1_SelectionChanged(object sender, EventArgs e)
{
    if (listView1.SelectedCells.Count > 0)
    {
        // bundle is now accessible in your event handler:
        richTextBox1.Text = bundle.GetEmail((int)listView1.SelectedCells[0].Tag).Body;
    }
}

数据 GridView 代码

int i;

for (i = 0; i < bundle.MessageCount; i++)
{
    email = bundle.GetEmail(i);

    string[] row = new string[] { email.From, email.Subject, email.FromName };
    object[] rows = new object[] { row };

    foreach (string[] rowArray in rows) 
    {
        dataGridView1.Rows.Add(rowArray);
    }
} // This line added by Jon

最佳答案

我之前已经创建了数据 GridView 的代码,但你已经完成了,所以我没有在你的最后一个问题中发布,但我认为,你应该尝试下面的代码。

 // i am creating a new object here but , you can have a single object on the form
    DataGridView dgv = new DataGridView();

    private DataTable EmailSource { get; set; }


        dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        dgv.SelectionChanged+=new EventHandler(dgv_SelectionChanged);



        Chilkat.MessageSet msgSet = imap.Search("ALL", true);
        if (msgSet != null)
        {
            bundle = imap.FetchBundle(msgSet);


            CreateDataTable();

            if (bundle != null && dt!=null)
            {
                Chilkat.Email email;
                int i;
                for (i = 0; i < bundle.MessageCount; i++)
                {
                    email = bundle.GetEmail(i);
                    if(email!=null)
                    {
                    DataRow drow = EmailSource.NewRow();
                    drow["Id"] = i.ToString();
                    drow["From"] = email.FromName;
                    drow["Subject"] = email.Subject;
                    drow["DateRecived"] = email.DateRecived;
                    // i am adding email body also
                    drow["Body"] =email.Body;
                    EmailSource.Rows.Add(drow);
                    }
                }

                // Save the email to an XML file 
                bundle.SaveXml("email.xml"); 



               dgv.DataSource= EmailSource;

                // Hiding Body from the grid
               dgv.Columns["Body"].Visible =false;



            }
        }

    // this event handler will show the last selected email.
   void dgv_SelectionChanged(object sender, EventArgs e)
    {
        DataGridViewSelectedRowCollection rows = dgv.SelectedRows;
        if (rows != null)
        {
            // get the last  selected row
            DataRow drow = rows[rows.Count - 1].DataBoundItem as DataRow;

            if (drow != null)
            {
                richTextBox1.Text = drow["Body"];
            }

        }
    }

    private void CreateDataTable()
    {
        EmailSource = new DataTable();
        EmailSource.Columns.Add("Id");
        EmailSource.Columns.Add("From");
        EmailSource.Columns.Add("Subject");
        EmailSource.Columns.Add("DateRecived");
        EmailSource.Columns.Add("Body");

    }

关于c# - 标记数组 c# winforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4363242/

相关文章:

c# - 如何从数据集中设置 DataGridViewComboBoxColumn 值

c# - 如何更改datagridview的值?

html - 将鼠标悬停在 anchor 标记内的图像上并且 anchor 标记位于 div 内时,如何显示文本?

iOS - 按标签查找和操作文本字段?

c# - C#禁止调用默认构造函数的根本原因是什么?

c# - 类本身内部的类实例

c# - 将数据 GridView 导出到 csv 文件

struts - 如何获取 <s :url. 传递的参数。 Action 类中的struts标签

c# - XNA 倍数立方体

c# - 如何为 [] 属性定义 XAML 示例数据