我需要我的应用程序要求用户浏览到特定文件,保存该文件位置,然后将TextBox中的字符串写入其中。
但是,我只需要我的最终用户浏览到应用程序启动第一次的文件。只有一次。
这就是我的困境,如果它是第一次启动,我怎样才能让我的应用记住?
答案 0 :(得分:6)
我认为你想要一个文件夹,而不是文件,但除此之外。
您可以使用UserSetting(请参阅项目属性,设置)并使用空值或无效值进行部署。只有从设置中读取无效值时,才会启动对话框。
这是基于每个用户。
您可以在.NET中使用注册表,但您确实希望尽可能远离它。库不在System命名空间中这一事实是一个指标。
答案 1 :(得分:0)
保存在注册表中选择的文件,或保存在用户的Documents and Settings文件夹中的配置文件中。
要访问本地程序的路径,请使用:
string path = Environment.GetFolderPath(Environment.LocalApplicationData);
答案 2 :(得分:0)
我会使用Registry为您的应用程序添加“SavedFileLocation”条目。
有关使用注册表的教程,请检查here。
然后你可以检查密钥是否存在,如果没有出现对话框
如果密钥存在,则应检查文件是否存在。如果该文件不存在,您可能应该将此信息提供给用户,并询问他们是否要在那里创建新文件,或选择新位置。
否则,获取该值并将其保留为运行时。
代码:
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;
}