我正在使用Windows Forms
进行提醒项目。我使用两种形式,即reminderform
和reminder
。我使用reminderform
来设置提醒并将详细信息存储在数据库中。我编写了reminder
代码,使用存储在数据库中的计时来触发提醒。问题是每次我必须首先初始化reminder
表单手动重启应用程序,以便使用reminderform
表单触发提醒集。有没有办法可以在程序本身中完成它。
要设置我必须使用的提醒:
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new reminderform());
}
}
要使应用程序触发我必须使用的提醒:
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new reminder());
}
}
答案 0 :(得分:1)
reminderform
不应与您的数据库进行交互(以存储详细信息,如您所说的时间)。该逻辑应该封装在不同的类中。我们的想法是将您的模型与您的视图分开。如果没有这样做,很难根据您发现的模型中的信息(即您的数据库)选择正确的视图。分离出此逻辑后,您可以选择要显示给用户的相应视图。例如(并记住这是非常假设的):
ReminderDatabase db = new ReminderDatabase();
var remindersCollection = db.Fetch();
foreach (var reminder in remindersCollection)
{
if (reminder.InspectTimings().ReminderShouldActivate)
{
// show the reminder to the user
}
}
您可能不应该更改传递给Application.Run
的表单。我个人会让我的主表单在系统托盘中运行一个图标,并显示带有Outlook
样式弹出窗口的提醒。
答案 1 :(得分:1)
将static void Main()
更改为static void Main(string[] args)
,并在从数据库激活程序时发送命令行参数。您可以从Main中的args
数组访问它。