2 / 2 / 0
Регистрация: 21.01.2014
Сообщений: 57
1

Не получается вызвать метод из другого класса

07.02.2018, 09:33. Показов 1495. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть 2 формы и 2 соответствующих класса TpsViewFLEX и TpsViewForm2. В классе TpsViewForm2 надо вызвать метод start(), находящийся в классе TpsViewFLEX. Это действие должно происходить по нажатию кнопки из формы №2.

Сам метод start() используется в обоих классах, поэтому переносить в другой бесполезно (выдержка кода из формы №1):

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 public void start() //его надо вызвать
        {
            try
            {
                int listbox_index = Convert.ToInt32(Data_ListBox.Value);
 
                if (listbox_index == 0)
                {
                    ISO_L(); //находится в классе TpsViewFLEX
                }
                if (listbox_index == 1)
                {
                    ISO_R(); //находится в классе TpsViewFLEX
                }
            }
            catch
            {
                MessageBox.Show("Выберите тип");
            }
        }
Сделал следующим образом (выдержка кода из формы №2, событие находится в классе TpsViewForm2):

C#
1
2
3
4
5
6
7
8
9
   private void button1_Click(object sender, EventArgs e)
        { 
                //Прячет текущую форму
                this.Hide();
 
                //Вызов метода start() должен происходить тут
                TpsViewFLEX myClass = new TpsViewFLEX();
                myClass.start(); 
        }
Все классы объявил public. По моему мнению, кнопка должна была спрятать текущую форму и запустить метод start() из класса TpsViewFLEX. Однако этого не происходит

P.S. Надеюсь, я не написал полный бред и в этом есть смысл) Полный код в приложении.
Вложения
Тип файла: zip code.zip (13.3 Кб, 5 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2018, 09:33
Ответы с готовыми решениями:

Как для события Button_Click вызвать метод из другого класса ?
Добрый вечер, уважаемые форумчане ! Разбираюсь с делегатами и событиями. Хочу вызвать метод из...

Как вызвать определенный метод переданного класса через метод другого класса?
Добрый день. Захотел я вызвать в методе класса метод некоего другого класса, о котором я пока не...

С помощью делегата из одного класса вызвать private метод с другого класса
доброго времени суток. такой вопрос. С применением делегатов и пониманием проблем нет когда...

Вызвать метод из другого класса
Не могу вызвать метод. Ошибка: Ни одна из перегрузок метода "Prisp" не принимает "0" аргументов....

7
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
07.02.2018, 11:36 2
Цитата Сообщение от egrozavr Посмотреть сообщение
В классе TpsViewForm2 надо вызвать метод start(), находящийся в классе TpsViewFLEX
А где находится Data_ListBox, к которому ты обращаешься в этом методе?
0
2 / 2 / 0
Регистрация: 21.01.2014
Сообщений: 57
07.02.2018, 11:51  [ТС] 3
Цитата Сообщение от ViterAlex Посмотреть сообщение
А где находится Data_ListBox, к которому ты обращаешься в этом методе?
Он находится в классе TpsViewForm2.

C#
1
2
3
4
5
6
7
8
//Передаем переменные в главную форму
    Data_ListBox.Value = listBox1.SelectedIndex.ToString();
 
// Класс для передачи данных из формы в форму
    static class Data_ListBox
    {
        public static string Value { get; set; }
    }
Это нужно для передачи данных из класса в класс. Вот передавать данные из класса в класс умею, а вызывать методы нет.
0
124 / 124 / 17
Регистрация: 30.06.2010
Сообщений: 478
07.02.2018, 12:02 4
egrozavr, используй
C#
1
Owner = this
https://msdn.microsoft.com/ru-... 2147217396
0
2 / 2 / 0
Регистрация: 21.01.2014
Сообщений: 57
07.02.2018, 13:08  [ТС] 5
BigOblom, а можно пример? В msdn я мало что понял( Вот так попробовал сделать, но не получилось.

C#
1
2
3
4
5
6
7
//Вызов второй формы 
        private void button2_Click(object sender, EventArgs e)
        {
                this.fr2 = new TpsViewForm2();
                fr2.Owner = this;
                fr2.ShowMe(this);
        }
Во второй форме пишу:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 
   private void button1_Click(object sender, EventArgs e)
        { 
                //Прячет текущую форму
                this.Hide();
 
                //Вызов метода start() должен происходить тут
                TpsViewFLEX main = this.Owner as TpsViewFLEX;
                if (main != null)
                    {
                       main.start();
                    }
        }
Добавлено через 46 минут
Сделал по аналогии с передачей данных из класса в класс.

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
public partial class TpsViewFLEX : TpsForm, ITpsViewSetup, ITpsViewActivation
    {
        //Декларация второй формы
        private TpsViewForm2 fr2;
 
        //Вызов 2 формы
        private void button2_Click(object sender, EventArgs e)
        {
 
            if (fr2 == null)
            {
                this.fr2 = new TpsViewForm2();
                fr2.ShowMe(this);
            }
            else
            {
                fr2.Visible = true;
            }
 
            Data_start.Owner = start();
        }
 
       //Класс для передачи
       static class Data_start
        {
           public Form Owner { get; set; }
        }
 
        //Метод который надо передать
        public void start()
        {
              //тут текст программы
        }
}
Из второй формы пытаюсь вызвать таким образом:

C#
1
2
3
4
5
6
7
private void button1_Click(object sender, EventArgs e)
        {
                //Прячет текущую форму
                this.Hide();
 
                Data_start.Owner; //вызов программы из первой формы
        }
Теперь ругается на Owner (26 строка) в моём классе Data_start:

'TpsViewFLEX.TpsViewFLEX.Data_start.Owner': cannot declare instance members in a static class
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
07.02.2018, 14:14 6
egrozavr, почему бы в метод не передать нужное значение через параметр, а не обращаться к контролу, который вообще не должен быть виден вне формы?
0
2 / 2 / 0
Регистрация: 21.01.2014
Сообщений: 57
07.02.2018, 15:03  [ТС] 7
Цитата Сообщение от ViterAlex Посмотреть сообщение
почему бы в метод не передать нужное значение через параметр, а не обращаться к контролу, который вообще не должен быть виден вне формы?
Не совсем понял что вы имели ввиду. В сам метод start() мне ничего не нужно передавать. Мне нужно вызвать его через кнопку на второй форме.
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
07.02.2018, 15:54 8
egrozavr, по коду метода видно, что он запускает один из методов в зависимости от некоего значения. Вот это значение и передавай в метод, а не получай внутри метода, обращаясь к контролю, который расположен неизвестно где
0
07.02.2018, 15:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2018, 15:54
Помогаю со студенческими работами здесь

Как вызвать метод из другого класса?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Как вызвать в Main метод из другого класса?
Задачка на среднее арифметическое. Создал класс "Array", в котором происходит заполнение массива...

Как создать метод, чтобы его можно было бы вызвать из другого класса?
Как создать метод, чтобы его можно было бы вызвать из другого класса? Создаю в Form1.cs метод для...

Вызвать метод из другого класса
Всем привет. Подскажите что за магия у меня твориться. Есть программа, в которой есть JFrame с меню...

Как вызвать метод из другого класса
Есть класс Player, в нем есть метод "Shoot", как из него вызвать метод BCheck из класса...

Помогите вызвать метод из другого класса?
есть три класса: CServer CMainWnd CMyApp как мне увидеть результат работы сервера(CServer) в...


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

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

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