Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tag Array c# winforms

The code below lets me show emails received in a listview on when the selected index is changed displays the body of the selected email in a RTB. The problem is i changed the code to work with a data grid view and now the Tag part wont work

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;
    }
}

Code for data grid view

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
like image 624
Shane121 Avatar asked Mar 05 '26 14:03

Shane121


1 Answers

i have created earlier the code for datagrid view but you already done it so i haven't posted in your last question but i think , you should give a try to the below code.

 // 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");

    }
like image 157
TalentTuner Avatar answered Mar 07 '26 05:03

TalentTuner



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!