表格关闭时如何保存新对象?

时间:2014-03-01 22:18:06

标签: c# winforms

我写了一个代码,它在点击时会创建一个新按钮。但我想保存新的按钮设置(可能在文件中),大小等。在表单关闭后,它们应该被保存,我们应该能够在重新打开时再次看到它们。我怎么能这样做?

...谢谢

1 个答案:

答案 0 :(得分:0)

创建一个包裹按钮的类。 (WrappedButton)

因此它将按钮作为构造函数的参数。

向要保存的此类添加属性。高度,宽度,文字,左,右等。

在构造函数中,从按钮上的字段设置类的字段。

将所有WrappedButtons放入列表中。

使用以下代码在文件中保存和加载列表。

   public static void SaveListOfT_ToFile< T >( List< T > l, string filename )
   {
      Type[] extraTypes = new Type[1];
      extraTypes[ 0 ] = typeof ( T );

      XmlSerializer xs = new XmlSerializer( typeof ( List< T > ), extraTypes );

      using ( StreamWriter writer = new StreamWriter( filename ) )
      {
         xs.Serialize( writer, l );
      }
   }

   public static List< T > LoadListOfT_FromFile< T >( string filename )
   {
      try
      {
         Type[] extraTypes = new Type[1];
         extraTypes[ 0 ] = typeof ( T );

         XmlSerializer xs = new XmlSerializer( typeof ( List< T > ), extraTypes );
         List< T > a;

         using ( FileStream f = new FileStream( filename, FileMode.Open ) )
         {
            // Use the Deserialize method to restore the object's state with
            // data from the XML document. 
            a = ( List< T > )xs.Deserialize( f );
         }


         return a;
      }
      catch ( Exception )
      {
         return null;
      }
   }