- 締切済み
C# ファイルについて
Windows Formを作成中にぶち当たった壁なのですが、 パラメータ(テキストボックスなど)の保存方法についてです。 XMLやバイナリファイルに保存するのが一般的なそうですが、 ここで一つ疑問です。 通常、テキストファイルやOfficeなどのファイルは保存すると、 編集したファイルのみが指定したフォルダ上に生成されますが、 Windows Formの場合、アプリケーション上に保存といった形を取ることは出来ないのでしょうか? もっともexe形式なので、出来ないとは思いますが。 また、DataGridViewをListに格納し、CSV形式で、保存・読込を行っていますが、 バイナリ形式にすることは可能でしょうか? XML形式でも構いません。 回答よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8766/19892)
>Windows Formの場合、アプリケーション上に保存といった形を取ることは出来ないのでしょうか? 出来ません。 >もっともexe形式なので、出来ないとは思いますが。 その通り。 やるとすれば、自分で設定用ファイルを用意し、そのファイルに書き込む、などとしなければなりません。 この場合、設定用ファイルをどこに保存するか、が問題になります。 昔は、他のアプリケーションとバッティングしないようにする為、自分自身が居るフォルダに保存していました。 自分自身と同じフォルダに保存する事にすると、実行時に「自分自身が居るフォルダへの、リードライトアクセス権」が必要なので、UACが原因で「exeがある場所でファイルに書き込み出来ない」などの問題を引き起こす可能性があります。 そのため、設定ファイルに保存せず、自分専用のレジストリキーに値を書き込む方法が取られるようになって来ていましたが、実行時にレジストリアクセスの権限を取得する必要が出てきたため、レジストリ保存も既に時代遅れになりつつあります。 最近では、アプリケーションのデータフォルダの位置をシステムに問い合わせして、得たパスに自分専用のファイルをXML型式で作成する、と言うのが主流のようです。 http://element.dip.jp/~hm/memo/windevelop/appdata/ 当然ですが、設定ファイルの読み書き、コントロールのプロパティの読み書きは、自分で実装しないといけません。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
標準コントロールはシリアライザが実装されていませんので、以下ページのように 自前で実装する必要があります。 それがバイナリだろうがXMLだろうがJSONだろうが。 http://kimux.net/?p=360