Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
1

Использование объекта в коде другой формы

24.02.2016, 10:10. Показов 2107. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, такая проблема: объект создается в одной форме, а в другой его компилятор не видит. Класс public.
В чем загвоздка? Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2016, 10:10
Ответы с готовыми решениями:

Передача объекта формы в другой класс
Доброго времени суток, уже 4 или 5 день бьюсь с данной проблемой. У меня есть 2 класса, первый...

Изменение характеристик динамического объекта из другой формы
Добрый вечер! Не подскажете, как изменить, например, цвет динамически созданного объекта из...

Использование данных из другой формы
Доброго времени суток! Я все никак не могу разобраться с вопросом об использовании данных одной...

Использование функции из другой формы
Параллельно появился ещё один вопрос. Есть форма Form1, в которой есть таблица, обновляемая так же...

11
76 / 67 / 47
Регистрация: 26.03.2015
Сообщений: 205
24.02.2016, 11:14 2
Toros1992, код покажите, пожалуйста
0
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
24.02.2016, 11:48  [ТС] 3
Класс
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Competition
    {
        public string Name { get; set; }
        public string Address { get; set; }
        
        public Competition()
        {
            Name = "Введите здесь название соревнований";
            Address = "Введите здесь место проведения";
        }
 
 
    }
Первая форма, где создается объект
C#
1
2
3
4
5
public Form1()
        {
            Competition NewComp = new Competition();
            InitializeComponent();
        }
Выдает ошибку, что NewComp не существует в текущем контексте
C#
1
2
3
4
5
6
7
8
public Form2(Form1 mainForm)
        {
            
            Place.Text = NewComp.Address;
            NameOfComp.Text = NewComp.Name;   
            this.mainForm = mainForm;
            InitializeComponent();
        }
0
76 / 67 / 47
Регистрация: 26.03.2015
Сообщений: 205
24.02.2016, 12:25 4
Объект NewComp не является public. При таком создании вы его даже из обработчиков событий формы 1 не увидите. Напишите как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace YourNamespase
{
    public partial class Form1 : Form 
    {
         public Competition NewComp;
 
         public Form10()
        {
            InitializeComponent();
            NewComp = new Competition();
         }
// методы и события формы 1
     }
}
1
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
24.02.2016, 12:42  [ТС] 5
Melif, Спасибо большое!

Добавлено через 10 минут
Melif, К сожалению проблема не ушла...
C#
1
2
3
4
5
6
7
8
9
10
11
namespace RGSec
{
    public partial class Form1 : Form
    {
        public Competition NewComp;
        
        public Form1()
        {
            NewComp = new Competition();
            InitializeComponent();
        }
0
76 / 67 / 47
Регистрация: 26.03.2015
Сообщений: 205
24.02.2016, 12:45 6
Лучший ответ Сообщение было отмечено Toros1992 как решение

Решение

А вызываете из второй формы как? Должно быть прописано что-то вроде mainForm.NewComp . Напрямую вызвать объект NewComp из второй формы опять же нельзя, его нет в классе второй формы

И вызов второй формы из первой покажите, пожалуйста.
1
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
24.02.2016, 12:48  [ТС] 7
Да, спасибо, помогло!
C#
1
2
Form2 subForm = new Form2(this);
            subForm.ShowDialog();
0
76 / 67 / 47
Регистрация: 26.03.2015
Сообщений: 205
24.02.2016, 12:49 8
Замечательно
1
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
24.02.2016, 12:56  [ТС] 9
Melif, Если можно, еще один вопрос.
C#
1
2
Place.Text = mainForm.NewComp.Address;
NameOfComp.Text = mainForm.NewComp.Name;
Возникает исключение System.NullReferenceException, хотя в отладке видно, что свойства не пустые.
Place и NameOfComp это текстбоксы.
Надеюсь, не сильно докучаю))
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
24.02.2016, 12:59 10
Toros1992,
если код в конструкторе, то поставьте эти 2 строки после вызова InitializeComponent
1
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
24.02.2016, 13:03  [ТС] 11
Даценд, Спасибо! Потому что фактически текстбоксы не созданы были еще, да?
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
24.02.2016, 13:09 12
Да.
Если откроете Form2.Designer.cs, то увидите, что в этом методе (InitializeComponent) как раз инициализируются элементы (вызываются их конструкторы и затем устанавливаются некоторые свойства)
0
24.02.2016, 13:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2016, 13:09
Помогаю со студенческими работами здесь

Использование метода с другой формы
Подскажите пожалуйста, есть две формы MainForm и AddChangeForm. На MainForm есть такой код: public...

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

Использование Edit c другой формы
Здравствуйте. Можно ли открыв с главной формы, новую форму с Edit. Внести данные в Edit. После...

Использование переменной с одной формы в другой
Здраствуйте. У меня 2 формы: 1) Имеет кнопку и код: Dim a As String Private Sub...


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

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