3

我根据标准的初学者教程构建了一个小的 WindowsForm 应用程序。您使用按钮和文本框等控件来添加 2 个数字并将结果显示在文本框中的那种。

无论如何,我想做到这一点,以便当用户点击我的 .exe 时,它​​甚至会在启动程序/窗口之前检查我的内置到期日期。也就是说,如果我的到期日期是今天 10 月 30 日,那么什么都不会发生,甚至没有窗口窗体出现。但是,如果我的到期日期是 10 月 31 日,那么一切都会正常进行,并且会显示窗口和表单。但是,明天 10 月 31 日(到期日)和后天任何一天,如果用户运行我的 .exe,什么都不会发生。

我认为我的代码看起来像这样:

DateTime expiration = new DateTime(2013, 10, 31) //Oct. 31, 2013
If (DateTime.Today < expiration) //proceed normally
else // do nothing, nothing happens for the user

从教程来看,我的大部分理解仅限于编写在公共 Form1 中的代码:Form 部分代码:

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}

我将在哪里插入代码来检查今天的日期与我的到期日期,以便不加载任何表格?

4

3 回答 3

3

Program.cs您的解决方案资源管理器中查看。您可以在函数中添加此代码,如果您指定的条件尚未满足Main,则调用以离开应用程序。Application.Exit()

于 2013-10-30T16:00:07.370 回答
2

我不建议为此使用“本地时间”,因为用户可以随时自由更改它。

可能您必须从某个“时间服务器”获取当前时间

private static readonly DateTime expiration = new DateTime(2013, 10, 31);
static void Main()
{
    DateTime currentTime = GetTimeFromSomeTimeServer();//Implement yourself
    if (currentTime.Date >= expiration.Date)
    {
        return;//Dont run the app
    }
    //Rest of your code...
}
于 2013-10-30T16:04:54.390 回答
1

您很可能希望在Program.cs文件中使用它,这是一个简单的示例

static class Program
{
    static DateTime expiration = new DateTime(2013, 10, 31);

    /// <summary>
    /// The main entry point for the application
    /// </summary>
    [STAThread]
    static void Main()
    {
        if (DateTime.Today < expiration.Date) 
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
        else
        {
            Application.Exit();
        }
    }
}

但是,请记住,这并不是强制执行过期应用程序(例如试用软件)的真正推荐方法。通常最好使用某种形式的强大的许可系统,将日期硬编码到 exe 中绝不是完全证明和容易利用的。

于 2013-10-30T16:01:31.597 回答