Настройки свойств C # работают со второго раза - PullRequest
1 голос
/ 06 января 2012

Вот проблема: я опубликовал приложение, созданное с помощью Windows Forms с ClickOnce. Поэтому я не могу показать Условия обслуживания перед установкой. Клиент решил показать некоторую страницу Условий обслуживания после установки, и, если пользователь согласился с условиями, нажав кнопку, показать основное приложение. Проблема в том, что после установки приложение показывает 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();
}

Код, который запускается, когда пользователь нажимает кнопку Согласен :

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...