直列つなぎ。 -とある発達障害者の記録

知識と知識を繋ぐためのblog。 広汎性発達と診断されました。ぜんぜん役に立ってないけど。月収13万円、家賃4万円で生活するひつじ人間。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

 スポンサー広告

C# XMLデータ保存アルゴリズム試案



         
保存
 Window位置 
 WindowState
 WindowColor  これらはXML上ではstringでなければならないようだ。簡易な方法でも問題ないか?
 複数ウィンドウの状態復元に対応したい。
   


 参考:C# のアプリケーションに複数の設定セットを追加する      
  そもそもC#のconfigもXMLで記述されている。

   Boundsの場合以下のようになる。
   <userSettings>
        <WindowsFormsApplication33.Properties.Settings>
            <setting name="Bounds" serializeAs="String">
                <value>0, 0, 0, 0</value>
            </setting>
    BoundsはRectangleクラスのため、文字列"Bounds"に対しSettings.Designer.cs内でキャストが行われている。
    この手のはVisualStudio内で管理すべきだろう。 


Settings.Designer.cs

       public global::System.Drawing.Rectangle Bounds {
            get {
                return ((global::System.Drawing.Rectangle)(this["Bounds"]));
            }
            set {
                this["Bounds"] = value;
            }




 settingsファイルのプロパティ内で
 「出力ディレクトリにコピー」:常にコピーする に設定すれば、実行ファイルと同じフォルダに入るため、ユーザー側からも弄れる。弄る必要はない訳だが。

  

 ファイル名.rtf
    ┗ファイル名はnameプロパティのみを動的に変更したものを用いる or CaptionTextを用いる。
    ┗dictionaryクラスを用いる?
   


ロード時
 configからのload
  カレントディレクトリ¥Dataフォルダ内のファイル=configに保存されたファイル名情報とする。 configのload時に、Foreachで要素毎にメインフォーム生成を行うといった処理を想定している。

 所詮Fakestickyなので、わざわざ全部復元する必要はないかもしれない。
 どっちにしろ随分と複雑で面倒な処理を必要とするようだ。



 このソフトでは、https://osdn.net/projects/spd/releases/ 
 XMLは下記のような内容で作成されていた。
  <MainFormSize>
    <Width>0</Width>
    <Height>0</Height>
  </MainFormSize>
  <SettingsFormSize>
    <Width>200</Width>
    <Height>200</Height>
  </SettingsFormSize>
  <PrintFormBounds>
    <Location>
      <X>0</X>
      <Y>0</Y>
    </Location>
    <Size>
      <Width>300</Width>
      <Height>300</Height>
    </Size>
    <X>0</X>
    <Y>0</Y>
    <Width>300</Width>
    <Height>300</Height>
  </PrintFormBounds>


 非常にシンプルなため、これで行きたいところだ。
 複数の付箋を作るとXML形式の.datが作成され、そこからload時の復元が行われるようだ。

 やはり既存のアプリの動作は参考になる。
関連記事
スポンサーサイト

 Category: None

- 0 Comments

Leave a comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。