Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
标记数组c#winforms_C#_Datagridview_Tags - Fatal编程技术网

标记数组c#winforms

标记数组c#winforms,c#,datagridview,tags,C#,Datagridview,Tags,下面的代码让我可以在列表视图中显示所选索引更改时收到的电子邮件,并在RTB中显示所选电子邮件的正文。问题是我将代码更改为使用数据网格视图,现在标记部分无法工作 void SomeFunc() // This line added by Jon { int i; for (i = 0; i < bundle.MessageCount; i++) { email = bundle.GetEmail(i); ListViewItem i

下面的代码让我可以在列表视图中显示所选索引更改时收到的电子邮件,并在RTB中显示所选电子邮件的正文。问题是我将代码更改为使用数据网格视图,现在标记部分无法工作

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;
    }
}
void SomeFunc()//此行由Jon添加
{
int i;
对于(i=0;i0)
{
//现在可以在事件处理程序中访问捆绑包:
richTextBox1.Text=bundle.GetEmail((int)listView1.SelectedCells[0].Tag).Body;
}
}
数据网格视图的代码

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
inti;
对于(i=0;i
您正在使用两个代码列表中的
列表视图1.rows.Add(rowArray)
添加行。这是打字错误还是你把GridView命名为那样的

基本上,您将电子邮件的索引存储在“Tag”属性中

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

在向GridView添加项目时,您也需要确保执行相同的操作。

您正在使用两个代码列表中的
listView1.rows.Add(rowArray)
添加行。这是打字错误还是你把GridView命名为那样的

基本上,您将电子邮件的索引存储在“Tag”属性中

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

在向GridView添加项目时,您也需要确保执行相同的操作。

DataGridView没有“项目”集合。要使其工作,需要将DataGridView绑定到对象集合。像这样的事情应该让你开始:

List<Email> emails = new List<Email>();
for (i = 0; i < bundle.MessageCount; i++)
{
    email = bundle.GetEmail(i);
    emails.Add(email);
}
dataGridView.ItemsSource = emails;

DataGridView没有“项”集合。要使其工作,需要将DataGridView绑定到对象集合。像这样的事情应该让你开始:

List<Email> emails = new List<Email>();
for (i = 0; i < bundle.MessageCount; i++)
{
    email = bundle.GetEmail(i);
    emails.Add(email);
}
dataGridView.ItemsSource = emails;

我之前已经为datagrid视图创建了代码,但是您已经创建了,所以我没有在您的最后一个问题中发布,但是我认为,您应该尝试一下下面的代码

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

    }
//我正在这里创建一个新对象,但是,您可以在表单上创建一个对象
DataGridView dgv=新建DataGridView();
私有数据表EmailSource{get;set;}
dgv.SelectionMode=DataGridViewSelectionMode.FullRowSelect;
dgv.SelectionChanged+=新事件处理程序(dgv_SelectionChanged);
Chilkat.MessageSet msgSet=imap.Search(“全部”,true);
if(msgSet!=null)
{
bundle=imap.FetchBundle(msgSet);
CreateDataTable();
if(bundle!=null&&dt!=null)
{
Chilkat.Email;
int i;
对于(i=0;i
我在前面创建了datagrid视图的代码,但您已经创建了,所以我没有在您的最后一个问题中发布,但我认为,您应该尝试一下下面的代码

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

    }
//我正在这里创建一个新对象,但是,您可以在表单上创建一个对象
DataGridView dgv=新建DataGridView();
私有数据表EmailSource{get;set;}
dgv.SelectionMode=DataGridViewSelectionMode.FullRowSelect;
dgv.SelectionChanged+=新事件处理程序(dgv_SelectionChanged);
Chilkat.MessageSet msgSet=imap.Search(“全部”,true);
if(msgSet!=null)
{
bundle=imap.FetchBundle(msgSet);
CreateDataTable();
if(bundle!=null&&dt!=null)
{
Chilkat.Email;
int i;
对于(i=0;i