Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов методов объекта в обработчиках кнопок, 2 функции объекта 
:(
    Опции темы
Modul
Дата 31.5.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 17.2.2006

Репутация: нет
Всего: нет



Посоветуйте, как правильнее (или лучше) вызвать две функции объекта с 
в разных обработчиках кнопок.

Функция mes2() из класса Class использует результат функции mes1().

Код

namespace WindowsApplication_Test
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        Class c = new Class();

        private void button1_Click(object sender, EventArgs e)
        {
            c.mes1();            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            c.mes2(this);            
        }
    }
}


Код

namespace WindowsApplication_Test
{
    public class Class
    {
        
        private int i;
        
        public Class(){}

        // Функция mes1() использует результаты mes2()
        public void mes1()
        {
            MessageBox.Show(i.ToString());
        }

        // Функция mes2() выполняется первой
        public void mes2(Form1 form1)
        {
            i++;
            form1.label1.Text = i.ToString();
        }
    }
}



Хотел передать ссылку в конструктор - ругается.
Class c = new Class(this);
Сделал через ссылку на Form1 в функции mes2() - работает.

Вопросы: 
1) Можно ли иначе это сделать ?
2) Правильно ли я сделал ?
--------------------
I'll be back !
PM MAIL   Вверх
tol05
Дата 31.5.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Ругается - и правильно делает!
Ты же пытался передать this до вызова конструктора формы, а там его еще нет. Статическая инициализация, однако smile

А так - нормально. 
Хотя так как ты хотел - лучше, ИМХО
Код

namespace WindowsApplication_Test
{
    public partial class Form1 : Form
    {
        Class c;

        public Form1()
        {
            InitializeComponent();
            c = new Class(this);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            c.mes1();            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            c.mes2();            
        }
    }
}

public class Class
    {
        
        private int i;
        Form1 form;
        
        public Class(Form1 form1)
       {
           form = form1;
       }

        // Функция mes1() использует результаты mes2()
        public void mes1()
        {
            MessageBox.Show(i.ToString());
        }

        // Функция mes2() выполняется первой
        public void mes2()
        {
            i++;
            form.label1.Text = i.ToString();
        }
    }



НЕ ТЕСТИЛ! Могу ошибаться.

Это сообщение отредактировал(а) tol05 - 31.5.2007, 13:43


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Modul
Дата 31.5.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 17.2.2006

Репутация: нет
Всего: нет



В том-то и дело, что такой вариант я пробовал.

Код

Class c;

        public Form1()
        {
            InitializeComponent();
            c = new Class(this);
            
        }    


Наверное, перегрелся , тфу... smile 
Клемануло.


Это сообщение отредактировал(а) Modul - 31.5.2007, 14:27
--------------------
I'll be back !
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.