0

私はC#でMDIアプリケーションを書いています。ユーザーが複数のドキュメントの表示方法をカスタマイズできるように、開いているすべてのウィンドウの位置と内容を保存する方法が必要です。これを行う簡単な方法はありますか、それとも独自のソリューションを展開する必要がありますか?

4

1 に答える 1

1

いくつかのフォーム永続性クラスを見てきましたが、それらは私が必要としていたことを正確に実行しませんでした。私は自分自身を転がしてしまい、本質的に次のことをしました:

Control mdiClientControl;
foreach (Control control in Controls)
{
   if (control is MdiClient)
   {
      mdiClientControl = control;
      break;
   }
}

foreach (Form mdiChild in MdiChildren)
{
   string theName = mdiChild.Name + "_Window_Layout";
   DoSave(theName, "Top", mdiChildTop);
   .
   .
   .
   DoSave(theName, "WindowState", (int)mdiChild.WindowState);
   DoSave(theName, "Visible", mdiChild.Visible);
   DoSave(theName, "ChildIndex", theMDIClientControl.Controls.GetChildIndex(mdiChild));
}

DoSave()は、この情報をユーザーのスペースにあるXMLファイルに保存するだけですが、もちろん別の方法で保存することもできます。

起動時など、必要に応じて、基本的にプロセスを逆にし、保存された設定を調べ、値を設定するReadSettings()メソッドを使用します。この問題にはもっと洗練された解決策があるかもしれませんが、これは私にとって本当にうまくいきました。

お役に立てば幸いです。

于 2009-09-30T14:06:06.320 に答える