#c# #winforms
#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.
}
}
Теперь, когда электронное письмо успешно отправлено, я хочу, чтобы оно добавило новую строку в datagridview моей формы журнала. В форме журнала отобразится имя файла, дата отправки и статус электронного письма.
logForm.cs
| Filename | Date Delivered | Status |
|----------|-----------------------|--------------|
| test123 | Friday, July 04, 2014 | Delivered |
| | | |
Возможно ли добавить список в data gridview в logForm из моей формы taskEvent? Пожалуйста, сообщите, как это возможно. Спасибо.
Ответ №1:
Да, и это довольно просто с помощью следующих шагов:
- Добавьте в свою форму журнала общедоступный метод и выберите класс, представляющий данные, которые вы хотите зарегистрировать.
- Добавьте этот новый метод в сетку
- Создайте ссылку на форму журнала в форме задачи, сохранив ее в переменной
- Выполняйте вызовы общедоступного метода, когда хотите регистрировать события
Редактировать
Итак, пункт 3. вам нужно что-то вроде этого, очевидно, что при создании вашей TaskForm вам нужно присвоить этой переменной экземпляр LogForm.
class TaskForm : Form
{
public LogForm MyLogForm;
public void updateLogs()
{
MyLogForm.UpdateLog(new LogEntry());
}
}
Комментарии:
1. спасибо, Ян, я понимаю тебя за 1-й и 2-й пункты. Немного запутался на 3-м и 4-м. вы имеете в виду передачу переменной из задачи в журнал? может ли этот метод обновлять gridview в режиме реального времени?
2. @Ren — Немного отредактировал мой ответ, чтобы прояснить ситуацию.
3. tq, это означает, что 1-й мне нужно создать класс в других файлах saperated class, затем 2-й указан для сохранения значения в форме задачи, 3-й — вызвать общедоступный метод в форме журнала в форме задачи? поправьте меня, если я ошибаюсь.
4. @Ren: Боюсь, я не понимаю вашего вопроса
5. хорошо, я имею в виду, что для вашего первого пункта мне нужно сначала создать новый класс в новом отдельном файле класса rite?