powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / сохранить - восстановить состояние окна упростить
2 сообщений из 2, страница 1 из 1
сохранить - восстановить состояние окна упростить
    #39025497
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Класс для запоминания и восстановления состояния окна размер и положение на экране.
Его потомки будут сохранять восстанавливать, чтото еще.
Можно как -то упростить?
Особенно в этом месте были трудности с преобразованием типа
tthis = (T) formatter.Deserialize(fs);

Поэтому пришлось ввести параметер ref T tthis.
save<T>(T tthis, string FlNm, llbBox l) сделал с шаблоном для однообразия, его можно
без шаблона писать




Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
    [Serializable]
    public class wndStt {
       public int x;
       public int y;
       public int width;
       public int height;
       public wndStt(){
           x = 20;
           y = 10;
           width = 400;
           height = 300;
       }
       public virtual void set(Form f){
          f.Size = new System.Drawing.Size(width, height);
          f.Location = new Point(x, y);
       }
       public virtual void get(Form f){
           x = f.Location.X;
           y = f.Location.Y;
           width  = f.Size.Width;
           height = f.Size.Height;
       }

       static public  void restore<T>(ref T tthis, string FlNm, llbBox   l){
          if (File.Exists(FlNm) ){      // иногда при сбоях записи
                                          // длина файла оказывается 0
            FileInfo someFileInfo = new FileInfo(FlNm);
  
            if (someFileInfo.Length !=0){ 
    
               try {
                 using (FileStream fs = new FileStream(FlNm, FileMode.Open))
                 {
                     XmlSerializer formatter = new XmlSerializer(tthis.GetType());
                     l.WriteLine(IMPORTANCELEVEL.Warning, "Deser1");
                     tthis = (T) formatter.Deserialize(fs);

                 }
               }

               }                 
               catch (Exception ex){
                 l.WriteException(ex, "Configuration was skipped 2");
               }                 

             }
             else
               File.Delete(FlNm);
          }
       }

       static public  void save<T>(T tthis, string FlNm, llbBox   l){

         try {
           using (FileStream fs = new FileStream(FlNm, FileMode.Create))
           {
               XmlSerializer formatter = new XmlSerializer(tthis.GetType());
               formatter.Serialize(fs, tthis);
           }
         }
               
         catch (Exception ex){
           l.WriteException(ex, "Some problem with configuration saving");
         }                 

      }
    }
...
Рейтинг: 0 / 0
сохранить - восстановить состояние окна упростить
    #39025498
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там еще, похоже, вызывается дллка из джаст ин тайм компилятора,
приводящая к IOExeption, это правда или просто воспаленное воображение?
На деле, в качестве затычки (workaround), я делаю две попытки сериализации десериализации с задержкой среда, тогда работает устойчиво, только бип появился.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / сохранить - восстановить состояние окна упростить
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]