从另一个winform更新winform DataGridView

本文关键字:winform DataGridView 更新 另一个 | 更新日期: 2023-09-27 18:11:29

我已经创建了一个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中的数据网格视图?请告知这是如何可能的。谢谢你!

从另一个winform更新winform DataGridView

是的,它非常简单,只需以下步骤:

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

编辑

所以第三点你需要这样的东西,显然当你构建你的TaskForm时你需要用一个实例化的LogForm来分配这个变量。

class TaskForm : Form
{
   public LogForm MyLogForm;
   public void updateLogs()
   {
       MyLogForm.UpdateLog(new LogEntry());
   }
}