Winforms C#属性设置从第二次开始工作

Winforms C#属性设置从第二次开始工作,winforms,Winforms,问题是:我发布了一个应用程序,它是用带有ClickOnce的Windows窗体制作的。因此,我无法在安装前显示服务条款。客户端决定在安装后显示一些服务条款页面,如果用户按下按钮同意这些条款,则显示主应用程序。问题是,安装后,应用程序显示ToS,用户接受,第一次重新启动后,用户再次显示ToS!如果他接受,用户下次打开应用程序时(重启后或关闭并再次打开应用程序后),此问题将不再出现,即如果用户同意ToS,则主应用程序将显示,而不询问ToS 在设置中定义tos的代码: [global::System.

问题是:我发布了一个应用程序,它是用带有ClickOnce的Windows窗体制作的。因此,我无法在安装前显示服务条款。客户端决定在安装后显示一些服务条款页面,如果用户按下按钮同意这些条款,则显示主应用程序。问题是,安装后,应用程序显示ToS,用户接受,第一次重新启动后,用户再次显示ToS!如果他接受,用户下次打开应用程序时(重启后或关闭并再次打开应用程序后),此问题将不再出现,即如果用户同意ToS,则主应用程序将显示,而不询问ToS

在设置中定义tos的代码:

[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool tos {
    get {
        return ((bool)(this["tos"]));
    }
    set {
        this["tos"] = value;
    }
}
应用程序启动时检查ToS的代码:

bool tosB = Properties.Settings.Default.tos;
if (!tosB)
{
    this.tab_control.SelectTab(this.TOS_PAGE);
    this.richTextBox1.Rtf = 
        global::MyAppName.Properties.Resources.terms_and_conditions;
}
else
{
    check_connectivity();
}
当用户点击I agree按钮时运行的代码:

private void button2_Click(object sender, EventArgs e)
{
    Properties.Settings.Default.tos = true;
    Properties.Settings.Default.Save();
    Microsoft.Win32.RegistryKey key = 
        Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
            "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
    key.SetValue("My App Name", Application.ExecutablePath.ToString());
    check_connectivity();
}