0 / 0 / 1
Регистрация: 22.09.2014
Сообщений: 37
1
.NET 4.x

Вызвать метод, который находится в классе другой формы

31.10.2014, 16:07. Показов 2208. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, столкнулся с такой проблемой: Есть два окна, основное MainWindow и вторичное PassTurbo. С основного вызывается
C#
1
2
PassTurbo PT = new PassTurbo();
PT.ShowDialog();
В окне PassTurbo происходит ряд действий, после чего я должен запустить метод с первого окна и закрыть PassTurbo
Делаю так в PassTurbo:
C#
1
2
3
MainWindow mw = new MainWindow();
mw.TurbolikerAuth(TurbolikerPassPasswordBox.Password);
this.Hide();
Но ничего не происходит после закрытия PassTurbo, т.е. он не вызывает метод с основного окна. Как это исправить?

Добавлено через 12 часов 7 минут
вообще не пойму почему не работает =(
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2014, 16:07
Ответы с готовыми решениями:

Вызвать событие другой формы
Доброе время суток. у меня есть 2 окна. мне нужно что бы при нажатии кнопки во второй окне,...

Повторное динамическое отображение usercontal(который находится в другой сборке )
Здравствуйте, возникла задача диначической подгрузки Silverlight библиотек(которые содержат...

Как в событии одной кнопки вызвать метод другой
Добрый день. Silverlight приложение. Есть две кнопки: button1 и button2. Как в обработчике...

Можно ли как-нибудь через сокет tcp подключится к серверу который находится в другой подсетке
Здравствуйте. Можно ли какнибудь через сокет tcp подключится к серверу который находится в другой...

4
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
31.10.2014, 16:22 2
Покажи код
0
0 / 0 / 1
Регистрация: 22.09.2014
Сообщений: 37
31.10.2014, 16:47  [ТС] 3
Первое окно:
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
using System;
using System.Windows;
using System.Windows.Controls;
using System.Threading.Tasks;
using xNet.Collections;
using xNet.Net;
using xNet.Text;
 
namespace TurboBot
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        public void VKAuthButton_Click(object sender, RoutedEventArgs e)
        {    
                        // Вызываю второе окно
            PassTurbo PT = new PassTurbo();
            PT.ShowDialog();
        }
 
 
        public void TurbolikerAuth(string TurboPass)
        {
            Task<string> t1 = VK.AuthTurbo("", TurboPass);
            t1.ContinueWith(task =>
            {
                if (t1.Result == "Лайк не поставлен, попробуйте заново авторизировтаься в Turboliker." || t1.Result == "Пароль от Turboliker не верный, попробуйте заново авторизировтаься в Turboliker.")
                {
 
                    TurbolikerAuthButton.IsEnabled = true;
                    LogAdd(t1.Result);
                }
                else
                {
                    LogAdd(t1.Result);
                }
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }
    }
}
Второе окно:
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
using System.Windows;
 
namespace TurboBot
{
    public partial class PassTurbo : Window
    {
        public PassTurbo()
        {
            InitializeComponent();
        }
 
        private void BackButton_Click(object sender, RoutedEventArgs e)
        {
            this.Hide();
        }
 
        public void NextButton_Click(object sender, RoutedEventArgs e)
        {
            if (TurbolikerPassPasswordBox.Password != "")
            {
                // Вызываю метод с первого окна и закрываю это окно
                MainWindow mw = new MainWindow();
                mw.TurbolikerAuth(TurbolikerPassPasswordBox.Password);
                this.Hide();
            }
        }     
    }
}
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
31.10.2014, 17:02 4
Лучший ответ Сообщение было отмечено skvoshiz как решение

Решение

Ты создаёшь в памяти второй экземпляр главного окна, которое скрыто и вызываешь метод у него.

Добавлено через 1 минуту
C#
1
2
3
4
5
6
        public void VKAuthButton_Click(object sender, RoutedEventArgs e)
        {    
                        // Вызываю второе окно
            PassTurbo PT = new PassTurbo(this);
            PT.ShowDialog();
        }


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
using System.Windows;
 
namespace TurboBot
{
    public partial class PassTurbo : Window
    {
        MainWindow _mw;
 
        public PassTurbo(MainWindow mw)
        {
            InitializeComponent();
            _mw = mw;
        }
 
        private void BackButton_Click(object sender, RoutedEventArgs e)
        {
            Hide();
        }
 
        public void NextButton_Click(object sender, RoutedEventArgs e)
        {
            if (TurbolikerPassPasswordBox.Password != "")
            {
                _mw .TurbolikerAuth(TurbolikerPassPasswordBox.Password);
                Hide();
            }
        }     
    }
}
1
0 / 0 / 1
Регистрация: 22.09.2014
Сообщений: 37
31.10.2014, 17:54  [ТС] 5
Спасибо огромное ! Реально работает!
0
31.10.2014, 17:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2014, 17:54
Помогаю со студенческими работами здесь

Не могу вызвать метод на выполнение на другой форме из-за того что она открыта через ShowDialog а не Show
Хочу вызвать метод на другой форме на выполнение при помощи делегата . Но не могу, так как...

Как в методе вызвать другой метод? У обоих различается параметр "e"
Добрый день. Изучать С# начал недавно. У меня сложилась такая ситуация. Хочу в методе public void...

Из формы вызвать метод который находится в dll
писал имя.метод, не видит тот файл который нужен, в ссылки добавил проект Нужно вызвать при...

В классе OnlyData написать метод, который выводит значение переменной i и вызвать этот метод в том же классе
Я конечно понимаю, что задача оч простая, но все же. В классе OnlyData нужно написать метод,...


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

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

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