9 / 9 / 4
Регистрация: 07.12.2011
Сообщений: 120
1

Как при переключении окон сохранять в них текущие изменения?

01.12.2014, 19:07. Показов 2498. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Предположим, в исходном окне MainWindow, я что-то поменял, после чего при помощи кода
C#
1
2
3
4
5
6
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Window1 a = new Window1();
            a.Show();
            this.Visibility = Visibility.Hidden;
        }
я открываю другое окно Window1, но исходное окно MainWindow я не закрыл, а сделал невидимым, в надежде, что мои изменения в нём сохранились.
Одако, код, позволяющий вернуться в исходное окно MainWindow с сохранёнными в нём изменениями, я не нашёл. Ели это возможно, признателен за подсказку.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2014, 19:07
Ответы с готовыми решениями:

Есть ли возможность сохранять текущие изменения БД не закрывая приложение
Проблема такая При открытии приложения все файлы БД во всех формах открываются. При закрытии...

Как сделать, чтобы приложение не останавливалось при переключении окон?
Сделал приложение на юнити таймер/будильник, но возникла проблема: что он останавливается если...

При переключении окон глюки. Как вылечить? (скрин прилагаю)
Когда переключаюсь между окнами мышкой, часто визуально часть содержимого предыдущего окна остается...

Косяки с графикой при переключении окон
Вобщем, я отчаялся понять в чем дело. Нужно в заданной клетке поля нарисовать нолик(игра...

4
53 / 53 / 18
Регистрация: 26.07.2012
Сообщений: 188
02.12.2014, 10:50 2
Очевидно, в окне Window1 вам нужно хранить ссылку на окно MainWindow , назовем ее mainWindow В окне Window1 можно сделать кнопку, по клику на которую будет вызываться код:
C#
1
mainWindow.Visibility = Visibility.Visible;
1
9 / 9 / 4
Регистрация: 07.12.2011
Сообщений: 120
03.12.2014, 19:57  [ТС] 3
Для формы Window1 такие варианты я пробовал. В случае
C#
1
2
3
4
private void button1_Click(object sender, RoutedEventArgs e)
        {
            MainWindow.Visibility = Visibility.Visible;
        }
редактор ругнулся: «Для нестатического поля, метода или свойства "System.Windows.UIElement.Visibility.get" требуется ссылка на объект»
И в Вашем варианте
C#
1
2
3
4
private void button1_Click(object sender, RoutedEventArgs e)
        {
            mainWindow.Visibility = Visibility.Visible;
        }
редактор отвечает: «Элемент "mainWindow" не существует в текущем контексте»
Не помогает даже замена private void на public void. Складывается впечатление, что это вообще невозможно.
0
53 / 53 / 18
Регистрация: 26.07.2012
Сообщений: 188
03.12.2014, 21:54 4
Лучший ответ Сообщение было отмечено KeysVS как решение

Решение

да ну что вы невозможно сразу, примитивно же все

в окне Window1 объявляем свойство
C#
1
public Window MyMainWindow {get;set;}
бэкграунд поля делать необязательно.

C#
1
2
3
4
5
6
/*Обработчик события клик по кнопке, которая показывает главное окно
*/
private void button1_Click(object sender, RoutedEventArgs e)
        {
            MyMainWindow.Visibility = Visibility.Visible;
        }
Естественно, свойство MyMainWindow должно содержать ссылку на объект MainWindow. Поэтому инициализируем:
C#
1
2
3
4
5
6
7
private void button1_Click(object sender, RoutedEventArgs e)
        {
            Window1 a = new Window1();
            a.MyMainWindow = this;
            a.Show();
            this.Visibility = Visibility.Hidden;
        }
Если вы планируете серьезно заниматься программированием - срочно читайте книги Герберта Шилдта по шарпу. Ну или Троелсена. Но читайте, без азов никуда.
1
9 / 9 / 4
Регистрация: 07.12.2011
Сообщений: 120
05.12.2014, 01:41  [ТС] 5
Круто! Большое спасибо!

Добавлено через 6 часов 12 минут
Окончательный рабочий вариант у меня получился такой:
(для исходного окна MainWindow)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
namespace WpfApplication1
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow() 
        {
            InitializeComponent();
        }
        public Window MyMainWindow { get; set; }
 
        private void but1_Click(object sender, RoutedEventArgs e)
        {
            Window1 a = new Window1();
            a.MyMainWindow = this;
            a.Show();
            this.Visibility = Visibility.Hidden;
        }
    }
}
(для другого окна Window1)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace WpfApplication1
{
    /// <summary>
    /// Логика взаимодействия для Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
        public Window MyMainWindow { get; set; }
 
        private void but2_Click(object sender, RoutedEventArgs e)
        {
            MyMainWindow.Visibility = Visibility.Visible;
            this.Close();
        }
    }
}
Теперь, при возвращении назад, к окну MainWindow, все сделанные в нём ранее изменения сохраняются, а окно Window1 закрывается, что и требовалось доказать благодаря подсказке monstrilla.
0
05.12.2014, 01:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2014, 01:41
Помогаю со студенческими работами здесь

При изменении размера графического окна сохранять в текстовый файл его текущие размеры
Кто напишет пример когда при изменении размера графического окна (graphABc) программа сохраняет в...

Разворачивание вложенных окон и диалогов при переключении программы
Столкнулся с такой проблемой, не могу найти ответ на неё. Создаю главную форму. В ней в...

Сохранять имя ячеек при копирование в них
Здравствуйте, форумчане! Обращаюсь с таким вопросом, который хочу показать сразу на примере Но...

Как НЕ сохранять изменения в файле *.xls
Здравствуйте, хотелось бы узнать еще одну вещъ. В этом коде: Private Sub Command1_Click() ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru