Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2015, 21:59   #31
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Цитата:
Например, можно просто сохранить в файл разделяя по строкам или каким-нибудь символом типа ";", потом читать с помощью ReadAllLines или разделять строку с помощью .Split для второго.
Да ясно можно и так, но это ж неудобно. Хотя если подумать то записать в файл это одна строчка кода

В mfc проще было ar <<n<<str<<str1; и все записалось. мб. и тут что то есть такое думал.
Цитата:
Можно сделать отдельный класс, добавить аттрибут [Serializable] и использовать XmlSerializer.
Видел видео за это на ютубе https://www.youtube.com/watch?v=zv7ZkQwDEqM там за xml рассказывают
Цитата:
Или в JSON с помощью Json.Net
JSON это тема, масив сформировал и в файл записал, затем файл считал и преобразовал обратно.

Попробую с помощью xml сделать, это вроде правильно.

А С# я так смотрю багатый язык на ключевые слова. Похоже я переменные неправильно инициализирую, он на видео делают так
Код:
publick string str {get;set;}
так как то нада

Последний раз редактировалось ninja2; 03.10.2015 в 22:04.
ninja2 вне форума Ответить с цитированием
Старый 03.10.2015, 22:50   #32
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Auto свойства это https://msdn.microsoft.com/en-us/library/bb384054.aspx
Вместо обычных свойств https://msdn.microsoft.com/en-us/library/k69wcs43.aspx когда не нужна никакая доп. логика.
В языках без свойств (например С++, Java) обычно просто создают методы getSomething/setSomething.

Цитата:
JSON это тема, масив сформировал и в файл записал, затем файл считал и преобразовал обратно.
Дык и XmlSerializer так же.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 03.10.2015 в 22:54.
Alex11223 вне форума Ответить с цитированием
Старый 04.10.2015, 06:59   #33
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

xml че то не может класс MainWindow сохранить
вот код
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;
using System.Xml.Serialization;

namespace Serialize
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public
        int n;
        string str;
        string str1;

        Settings m_settings = null;

        public MainWindow()
        {
            InitializeComponent();
            // проверяем нужно ли инициализировать

            //выводим
            textBox.Text = "n=" + n + "\nstr=" + str + "\nstr1=" + str1;
                getSave();// проверяем на сериализацию

        //    m_settings = Settings.GetSettings();
        }
        ~MainWindow()
        {
            //делаем сериализацию
            putSave();
        //    m_settings.Save();
        }

        //записывает в файл
        public void putSave()
        {
            string filename = Globals.serializeFile;
            //если файл существует то удаляем его
            if (File.Exists(filename)) File.Delete(filename);

            //используем using чтобы поток закрылся
            using (FileStream fs = new FileStream(filename, FileMode.Create))
            {
                XmlSerializer xser = new XmlSerializer(typeof(MainWindow));
                xser.Serialize(fs, this);
                fs.Close();
            }
        }

        //читает из файла
        public void getSave()
        {
            string filename = Globals.serializeFile;

            if (File.Exists(filename))
            {
                FileStream fs = new FileStream(filename, FileMode.Open);
                
                    XmlSerializer xser = new XmlSerializer(typeof(MainWindow));
                    MainWindow cl = (MainWindow)xser.Deserialize(fs);
                    this.n = cl.n;
                    this.str = cl.str;
                    this.str1 = cl.str1;
                
            }
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            n = 10;
            str = "hellow";
            str1 = "hellow world";
        }
    }
}
Пишет ошибку "Необработанное исключение типа "System.InvalidOperationExcepti on" в System.Xml.dll"
в строке
Код:
XmlSerializer xser = new XmlSerializer(typeof(MainWindow));
когда сохраняет в файл, и когда уже читает из файла понятно что ошибка, потому что нормально не сохранило. хз. что делать. Что то не так наверно с классом.

Похоже нужно настройки делать в отдельном классе как там пишут , а че MainWindow не работает хз.

Последний раз редактировалось ninja2; 04.10.2015 в 07:18.
ninja2 вне форума Ответить с цитированием
Старый 04.10.2015, 09:59   #34
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

InnerException посмотрите, чтобы узнать в чем именно причина.

Ну и сохранять весь MainWindow особого смысла нет, там ж куча разных свойств.

Да и вообще запихивать всю логику и данные в класс окна плохая идея, там должно быть только то, что связано с непосредственно отображением.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.10.2015, 15:16   #35
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Цитата:
Да и вообще запихивать всю логику и данные в класс окна плохая идея, там должно быть только то, что связано с непосредственно отображением.
Там есть <page> типо страницы и <window> и что нужно было просто страницы отображать? Я пример видел на MSDN geting started там и правда пустой класс MainWindow и создано 2 страницы.
В принципе главное чтобы работало )))

Как его использовать для отображения хз.

Щас почти приложение сделал и ваши замечания, программка отсылает сообщения на fl.ru под проектами, чтобы вручную не вводить, уже сделал. Осталось ГУИ подправить кнопки сделать активные не активные и все. Неохота и выставлять, а то еще меня на fl.ru забанят за такое . Как раз можно покритиковать что не так и как нада.

Еще хочу попробовать WinForm. WinForm чуть чуть знаю из CLI/С++, там главный класс Form и в нем все функции создаются. C# c MFC не сравнить, это настоящий язык высокого уровня. В нем еще можно разные dl подключать и обращаться к winapi функциям )))

Последний раз редактировалось ninja2; 04.10.2015 в 15:28.
ninja2 вне форума Ответить с цитированием
Старый 04.10.2015, 15:29   #36
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут страницы? Я не о том и это относится к любому приложению, а не только wpf.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 04.10.2015 в 17:24.
Alex11223 вне форума Ответить с цитированием
Старый 04.10.2015, 22:59   #37
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Цитата:
Причем тут страницы? Я не о том и это относится к любому приложению, а не только wpf.
Че? в WinForm и в MFC все в одном классе

Че то я непойму как отдельно создавать, от я создал пустое приложение WPF там создался класс
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication4
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}
И как тут выводить представление?
Где форма должна создаваться?

Последний раз редактировалось ninja2; 04.10.2015 в 23:20.
ninja2 вне форума Ответить с цитированием
Старый 04.10.2015, 23:53   #38
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что значит "все в одном"? Кто вас заставляет все туда пихать?

Я о "разделении ответственности"/separation of concerns и т.п.
Надо не пихать весь код в один файл на 100500 строк, а как-то разделять это все. Хотя бы для начала просто отделить UI от бизнес-логики/данных.

В WPF обычно используют паттерн MVVM.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.10.2015, 00:37   #39
ninja2
Форумчанин
 
Регистрация: 13.08.2015
Сообщений: 193
По умолчанию

Цитата:
Что значит "все в одном"? Кто вас заставляет все туда пихать?
Так удобней наверно. Да WPF само собой разделяет код представления от кода логики. Получается для одного представления вся логика в одном файле. То если создаем другое окно например диалоговое окно, то логика будет уже в другом файле.
В принципе я походу правильно сделал, видел стати по WPF, там так делают.
Цитата:
Я о "разделении ответственности"/separation of concerns и т.п.
Надо не пихать весь код в один файл на 100500 строк, а как-то разделять это все. Хотя бы для начала просто отделить UI от бизнес-логики/данных.
Как ее отделить? Например обработчики кнопок?
Да можно какой то класс создать член этого класса добавить в MainWindow, и типо логика будет в левом классе реализована, а через объект этого класса будет в MainWindow и просто обращаться к методам этого объекта. Класс сам по себе - это модуль. Для того и создавались классы чтобы можно было разбивать программу на модули. Удобно представлять модуль в виде класса.

Код:
В WPF обычно используют паттерн MVVM.
та глянул этот патерн ниче не понял. Еще есть MVC и MVP. Разбираться нада в них, сходу не разберешься.
MVC я знаю, виды отдельно, логика отдельно
MVP тоже самое что MVC
Только глянул MVVM ну это ж он по умолчанию реализуется в WPF. Логика отдельно, представление отдельно. Все.
ninja2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C# + WPF] Отлов нажатий клавиш, хуки, горячие клавиши в проекте WPF Casper-SC WPF, UWP, WinRT, XAML 3 03.03.2017 15:00
Условие обработки сообщений. GPSS JavScr Помощь студентам 0 17.05.2014 23:59
QT - цикл обработки событий. Базиля Помощь студентам 6 25.10.2013 16:54
класс Screen в WPF. Есть ли такой? [?] Не добавлять же сборку Forms в WPF Casper-SC Общие вопросы .NET 2 30.07.2010 15:10
Функция обработки сообщений VVVadim Win Api 2 08.12.2008 20:46