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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2008, 00:05   #1
HunterMan
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 58
По умолчанию Получение переменной класса

Есть две формы и два класса в одном проэкте.
Обе формы одновременно загружаются на экран.
При загрузке первой формы создается объект первого класса.
При загрузке второй формы создается объект второго класса.

К примеру, на первой форме есть две кнопки. Когда я нажимаю одну кнопку, то увеличиваю переменную объета первого класса на единицу, если нажата вторая кнопка, то эта переменная уменьшается на единицу.
Дальше перехожу на вторую форму. Если нажимаю на ней кнопку, то переменная объекта второго класса должна принять значение переменной объекта первого класса в первой форме.

Как мне получить доступ к переменым объетов, если объкты создаются при создании форм...?

Если бы можна было делать переменные глобальными, то я бы создал бы оба объета глобальными(к примеру). А кнопками на формах менял бы значение переменных класса используя методы класса. Но как я понял, то тут нельзя такого сделать... А при описаном выше создании объектов в силу диапазона видимости эти объекты друг друга не видят...и доступа к ним нету.

Последний раз редактировалось HunterMan; 30.11.2008 в 00:08.
HunterMan вне форума Ответить с цитированием
Старый 30.11.2008, 00:22   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Несколько вариантов:
1. Сделать эти классы статическими (получится что-то вроде глобальных переменных)
2. Передать ссылку на объект класса1 в объект класса2 и наоборот
3. Создать (если уже нет) класс, который будет видеть объекты обоих классов и пусть эту классы общаются через этого "переводчика"
pu4koff вне форума Ответить с цитированием
Старый 30.11.2008, 00:32   #3
HunterMan
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 58
По умолчанию

1. Сделать классы статическими или объекты класса?

3. А где создавать тогда переводчика? В Main?? Или как показать что мол созданы такие объекты?

2. Или если по второму варианту...то в каком модуле создать ссылку на объект?

Я вот в области видимости то и не могу разобратся..
Может примерчик есть какой-то?

Последний раз редактировалось HunterMan; 30.11.2008 в 00:39.
HunterMan вне форума Ответить с цитированием
Старый 30.11.2008, 00:43   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

в C# нет понятия модулей как такового. есть пространства имён. в каком namespace напишите, там и поплывёт.
Код:
// статический класс, который всё обо всех знает
static public class C
{
  A _objA;
  static public A objA
  {
    get
    {
      return _objA;
    }
    set
    {
       _ibjA = value;
    }
  }

  B _objB;
  static public B objB
  {
    get
    {
      return _objB;
    }
    set
    {
       _ibjB = value;
    }
  }
}
...
// Где-то в коде, где вам нужно:
// Создание объекта класса A
A myObj = new A();
C.objA = myObj;
...
// Создание объекта класса B
B myObj = new B();
C.objB = myObj;

...
// Где-то в классе A
int x = C.objB.x; // берём x из объекта класса B
...
// Где-то в классе B
int y = C.objA.y; // берём y из объекта класса A
Если объекту класса B нужен объект класса A, а классу A - пофик на класс B:
Код:
public class B
{
  A _objA;
  public B(A objA)
  {
    _objA = objA;
  }

  public A ObjA
  {
    get
    {
       return _objA;
    }
    set
    {
      _objA = value;
    }
  }
}
Если классы взаимозависимы, то параметр из класса убиваете и оставляете только свойство и следите, чтобы оно было инициализировано до использования

Последний раз редактировалось pu4koff; 30.11.2008 в 00:45.
pu4koff вне форума Ответить с цитированием
Старый 30.11.2008, 06:50   #5
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

можно передать объект первой формы во вторую прямо в конструкторе
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение типа переменной Игорь007 Общие вопросы C/C++ 7 10.01.2009 13:01
Обнуление переменной [MI_nor] Общие вопросы C/C++ 3 05.11.2008 18:01
Методы в качестве переменной DeKot Общие вопросы Delphi 7 31.10.2008 17:51
Изменение переменной yura-cat Помощь студентам 7 20.09.2008 17:42
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) Arkuz Общие вопросы Delphi 12 25.09.2007 20:47