質問
アプリケーションでは、ユーザーに特定のファイルを参照し、そのファイルの場所を保存し、その後 TextBox から文字列を書き込むように要求する必要があります。
ただし、エンドユーザーがファイルを参照するだけで済みます。 初めて アプリケーションが起動します。1回だけ。
ここに私のジレンマがあります。どうすれば申請書を入手できるでしょうか 覚えて 初めて起動した場合は?
解決
私は、フォルダではなくファイルをしたいと思いますが、それはポイント以外にもある。
あなたは(設定、プロジェクトのプロパティを参照してください)UserSettingを使用して、空または無効な値でそれを展開することができます。あなたが設定から無効な値を読み込む場合にのみ、あなたはダイアログを起動します。
これは、ユーザーごとにあります。
あなたは.NETのレジストリを使用することができますが、あなたは本当に離れてできるだけ多くから滞在したいです。ライブラリは、System名前空間に存在しないという事実は、指標である。
他のヒント
レジストリ内、またはユーザーのDocuments and Settingsフォルダ内の構成ファイルで選択したファイルを保存します。
あなたのローカルプログラムのパスを取得するには、使用します:
string path = Environment.GetFolderPath(Environment.LocalApplicationData);
レジストリを使用して、アプリケーションの「SavedFileLocation」のエントリを追加します。
レジストリの使用に関するチュートリアルについては、次を確認してください。 ここ.
次に、キーが存在するかどうかを確認し、存在しない場合はダイアログを表示します。
キーが存在する場合は、ファイルの存在を確認する必要があります。ファイルが存在しない場合は、この情報をユーザーに提示し、そこに新しいファイルを作成するか、新しい場所を選択するかを尋ねる必要があります。
それ以外の場合は、その値を取得し、実行時のために保持します。
コード:
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;
}