2009-08-15 184 views
1

我需要我的應用程序要求用戶瀏覽到特定的文件,保存該文件的位置,然後從文本框中向其中寫入一個字符串。保存.txt文件的文件路徑

但是,我只需要我的最終用戶瀏覽到文件第一次應用程序啓動。只有一次。

這裏是我的困境,如何才能讓我的應用程序記住如果它是第一次啓動?

回答

6

我想你想要的文件夾,而不是一個文件,但這是除了點。

您可以使用UserSetting(請參閱項目屬性,設置)並使用空值或無效值進行部署。只有當您從設置中讀取無效值時,纔會啓動對話框。

這是基於每個用戶的。

您可以在.NET中使用註冊表,但是您確實希望儘可能遠離它。庫不在System名稱空間中的事實是一個指示器。

+0

我認爲文件很有意義。 OP正在記憶一個要追加/寫入的文件。 – maxwellb 2009-08-15 17:41:25

+0

你的建議聽起來很合理,但對我來說這是中國人!我不知道你的意思是「用一個空的或無效的值來部署它」。謹慎地闡述一下? – 2009-08-15 17:52:20

+1

查看http://msdn.microsoft.com/en-us/library/k4s6c3a0.aspx關於用戶設置的更多信息。查看http://msdn.microsoft.com/en-us/library/wabtadw6.aspx以獲取有關使用設計器來管理它們的信息。 – 2009-08-15 18:54:33

0

將在註冊表中或在用戶的Documents and Settings文件夾中的配置文件中選擇的文件保存。

要獲取到本地程序的路徑,使用方法:

string path = Environment.GetFolderPath(Environment.LocalApplicationData); 
+0

我該怎麼做? – 2009-08-15 17:39:34

+0

你去了哪裏,舉個例子! – 2009-08-15 17:41:40

0

我會使用註冊表中添加了「SavedFileLocation」爲您的應用程序條目。

有關使用註冊表的教程,請檢查here

然後,您可以檢查密鑰是否存在,如果不存在對話框。
如果密鑰存在,你應該檢查文件的存在。如果文件不存在,您應該向用戶提供這些信息,並詢問他們是否想在那裏創建新文件或選擇新位置。
否則,取這個值並保存它的運行時間。

CODE:

AppInitialization() 
{ 
    RegistryKey appKey = Registry.CurrentUser.OpenSubKey(
     @"Software\YourName\YourApp" 
     ?? Registry.CurrentUser.CreateSubKey(@"Software\YourName\YourApp"); 


    this.fileLocation = appKey.GetValue("SavedFileLocation") 
     ?? GetLocationFromDialog() 
     ?? "DefaultFileInCurrentDirectory.txt"; 
} 

private static string GetLocationFromDialog() 
{ 
    string value = null; 

    RegistryKey appKey = Registry.CurrentUser.OpenSubKey(
     @"Software\YourName\YourApp" 
     ?? Registry.CurrentUser.CreateSubKey(@"Software\YourName\YourApp"); 

    using(OpenFileDialog ofd = new OpenFileDialog()) 
    { 
     if(ofd.ShowDialog() == DialogResult.OK) 
     { 
      value = ofd.File; 
      appKey.SetValue("SavedFileLocation", value); 
     } 
    } 

    return value; 
} 
+0

好吧,這不是「如果這是第一次啓動應用程序」,但它是「如果我有一個'有效'的文件位置記得。」 您可以通過此設置保存「NotFirstTime」存在/不存在的設置。 – maxwellb 2009-08-15 17:55:06