2014-09-03 85 views
1

保存一個系統屬性一直在尋找,並不能真正找到任何將完全關聯我在這裏要做的事情。我在WPF應用程序中創建了一個名爲'firstrun'的系統屬性,它是一個bool。嘗試讓程序讀取它是否爲真,然後在第一次運行程序時採取不同的行爲。但是一旦關閉,就會將其設置爲假。我的代碼是這樣的,每次我運行程序時,它仍然如此:在程序退出

public partial class MainWindow : Window 
{ 

    bool firstRun = Properties.Settings.Default.FirstRun; 

    public MainWindow() 
    { 
     InitializeComponent(); 
     if (firstRun) 
     { 
      MessageBox.Show("First run"); 
     } 
     else 
     { 
      // Run rest of program 
      MessageBox.Show("This is not the first run"); 
     } 
    } 

    private void windowClosing(object sender, System.ComponentModel.CancelEventArgs e) 
    { 
     this.firstRun = false; 
     Settings.Default.Save(); 
    } 


} 
} 
+0

如何引用'windowClosing'?你確定你註冊了事件處理程序嗎? – 2014-09-03 12:44:16

+1

您在MainWindow成員中更改值(bool firstRun)。您需要在設置(Properties.Settings.Default.FirstRun)中更改屬性值,然後調用Settings.Default.Save(); ... – Davecz 2014-09-03 12:45:54

+0

http://cl.ly/image/151Q0O2H3R1l/Screen%20Shot%202014-09-03%20at%2001.47.52%20LATE.png – 2014-09-03 12:48:35

回答

3

你在主窗口成員更改值:

bool firstRun = Properties.Settings.Default.FirstRun; 

您需要更改設置(Properties.Settings屬性值。 Default.FirstRun),然後調用Settings.Default.Save()這樣的:

private void windowClosing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    Properties.Settings.Default.FirstRun = false; 
    Settings.Default.Save(); 
} 

對於此功能,您必須在設置更改範圍的文件從申請到用戶的價值。在用戶範圍內屬性有getter和setter

+0

簡單的信息是:不要爲這樣的事物分配變量以防止弄亂事情。 – 2014-09-03 12:50:57

+0

'Properties.Settings.Default.FirstRun = false;'是隻讀的? – 2014-09-03 12:51:58

+0

在您的設置文件中,您必須將範圍從應用程序更改爲用戶,然後屬性不是隻讀:-) – Davecz 2014-09-03 12:54:15