重新启动Windows表单应用程序,首先初始化不同的表单

时间:2015-04-08 13:49:34

标签: c# visual-studio-2012 sql-server-2008-r2

我正在使用Windows Forms进行提醒项目。我使用两种形式,即reminderformreminder。我使用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());
    }
}

2 个答案:

答案 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数组访问它。