从另一个Winform更新winform DataGridView

时间:2014-07-04 07:55:34

标签: c# winforms

我创建了一个winform任务事件,它将在我的任务调度程序类中的指定时间发送电子邮件报告。

taskEvent.cs

public partial class taskEvent : Form
{
    //trigger task scheduler
    void triggerItem_OnTrigger(object sender, TaskScheduler.OnTriggerEventArgs e)
    {
        //Some other codes that generate report and specified formated filename on trigger.

        //send report on time scheduled
        SendMail(filename);
    }

    private void sendMail(string filename)
    {
        try
        {
          //send filename report as attachment
          SmtpServer.Send(mail);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
       updateLogs();
    }

   public void updateLogs()
   {
       //update log datagridview in another form.
       //update filename,datedelivered,status.
   }
}

现在,当电子邮件成功发送时,我希望它在我的logForm的datagridview中添加新行。 logForm可以查看文件名,日期和电子邮件的状态。

logForm.cs

| Filename |    Date Delivered     |   Status     |  
|----------|-----------------------|--------------|  
| test123  | Friday, ‎July ‎04, ‎2014 | Delivered    |  
|          |                       |              |

是否可以从我的taskEvent表单中向logForm中的数据gridview添加列表?请告知这是如何实现的。谢谢。

1 个答案:

答案 0 :(得分:1)

是的,通过以下步骤非常简单:

  • 将一个方法添加到您公开的日志表单中,并获取一个表示您要记录的数据的类。
  • 将此新方法添加到网格
  • 通过将其存储在变量
  • 中,在任务表单上创建对日志表单的引用
  • 要记录事件时调用公共方法

修改

所以第3点你需要这样的东西,显然当你构造你的TaskForm时,你需要用一个实例化的LogForm来赋值这个变量。

class TaskForm : Form
{
   public LogForm MyLogForm;

   public void updateLogs()
   {
       MyLogForm.UpdateLog(new LogEntry());
   }
}