Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для algoritm256
9 / 9 / 5
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1

Ошибка при передачи данных между формами

17.05.2014, 16:17. Показов 1801. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Проблема такова: Есть две формы. Одна содержит таблицу(dataGridView) — Наименование товара, Цена, Количество. Вторая Вызывается при нажатии кнопки "Добавить" и посылает в первую введенные в нее значение. Насчет передачи инфы из одной в другую руководствовался вот этим ресурсом Ответы на 7 самых частых вопросов по WinForms (Пункт 2,5). Проблема: При добавлении вылетает ошибка NullReferenceException was unhandled(Object reference not set to an instance of an object.) при нажатии кпопки "добавить"
Подскажите, как устранить данную ошибку. Заранее спасибо!
form1
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
45
46
47
48
49
50
51
52
53
54
55
    public partial class Waybil : Form
    {
        private string client = null;
        private string driver = null;
        private string carModel = null;
        private string carKey=null;
 
        public string GoodsName2 = null;
        public string GoodsPrice2 = null;
        public string GoodsCount2 = null;
        AddWaybilGoods add_waibil_goods = null;
        
        public Waybil()
        {
            InitializeComponent();
            Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
            base_.fill_combo(comboClients, "Clients", "ClientsName");
            base_.fill_combo(comboDrivers, "Drivers", "DriversName");
            base_.fill_combo(comboModel, "Cars", "CarsModel");
        }
 
        private void Create_Click(object sender, EventArgs e)
        {
            client = comboClients.SelectedItem.ToString();
            driver = comboDrivers.SelectedItem.ToString();
            carModel = comboModel.SelectedItem.ToString();
            carKey =Key.Text.ToString();
            Word.Application word = new Word.Application();
            word.Visible = true;
            Word.Document doc = word.Documents.Add();
            doc.Select();
            word.Selection.TypeText(client);
            word.Selection.TypeText(driver);
            word.Selection.TypeText(carModel);
            word.Selection.TypeText(carKey);
        }
 
        private void Add_Click(object sender, EventArgs e)
        {
            add_waibil_goods = new AddWaybilGoods();
            
            add_waibil_goods.Show();
            add_waibil_goods.Focus();
            dataGridView1.Rows.Add(GoodsName2,GoodsPrice2, GoodsCount2);
            dataGridView1.Update();
           // add_waibil_goods.Owner = this;
        }
 
        private void comboModel_SelectedIndexChanged(object sender, EventArgs e)
        {
            carModel = comboModel.SelectedItem.ToString();
            Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
            base_.find_item(Key, "Cars", "CarsKey", "CarsModel", carModel);
        }
    }
form2
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
 public partial class AddWaybilGoods : Form
    {
        Waybil w_b = null;
        public string GoodsName1 = null;
        public string GoodsPrice1 = null;
        public string GoodsCount1 = null;
 
        public AddWaybilGoods()
        {
            InitializeComponent();
            w_b= this.Owner as Waybil;
            Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
            base_.fill_combo(AddWaybilGoods1, "Goods", "GoodsName");
        }
 
        public void Добавить_Click(object sender, EventArgs e)
        {
            GoodsCount1 = Count.Text.ToString();
            w_b.GoodsName2 = GoodsName1;
            w_b.GoodsPrice2 = GoodsPrice1;
            w_b.GoodsCount2 = GoodsCount1;
            this.Close();
        }
 
        private void AddWaybilGoods1_SelectedIndexChanged(object sender, EventArgs e)
        {
            GoodsName1 = AddWaybilGoods1.SelectedItem.ToString();
            Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
            base_.find_item(Price, "Goods","GoodsPrice", "GoodsName", GoodsName1);
            GoodsPrice1 = Price.Text.ToString();
        }
    }
Миниатюры
Ошибка при передачи данных между формами   Ошибка при передачи данных между формами   Ошибка при передачи данных между формами  

0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.05.2014, 16:17
Ответы с готовыми решениями:

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

Используем свойство 'родитель' для передачи данных между формами
Все делал так, как написано в инструкции, а написано там следующее: при создании второй формы устанавливаем владельца. Вопрос: где это...

Передача данных между формами: Почему при срабатывании события OnDrawClick выводятся нули
Почему при срабавтивании события OnDrawClick выводятся нули? Как правиьно передать параметры из второй формы в первую? Первая форма: ...

4
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.05.2014, 19:12
algoritm256, ятд, что удобнее манипулировать DataSet или DataTable. GridView всего лишь визуальная оболочка, туда можно загрузить таблицу и все.
0
 Аватар для algoritm256
9 / 9 / 5
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
17.05.2014, 19:57  [ТС]
Мой опыт программирование на C# и знание компонентов слишком мал. Спасибо за совет. А по проблеме, вы можете подсказать из-за чего вылетает ошибка и как ее решить?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.05.2014, 20:07
Лучший ответ Сообщение было отмечено algoritm256 как решение

Решение

algoritm256, тут не могу сказать...
Вот почитайте про таблицу. Все-таки это намного удобнее, ятд.
http://msdn.microsoft.com/ru-r... .110).aspx
2
 Аватар для algoritm256
9 / 9 / 5
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
24.05.2014, 07:53  [ТС]
Решение найдено!

form1
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
45
46
47
48
49
50
51
52
public partial class Waybil : Form
    {
        private string client = null;
        private string driver = null;
        private string carModel = null;
        private string carKey=null;
 
        public string GoodsName2 = null;
        public string GoodsPrice2 = null;
        public string GoodsCount2 = null;
        AddWaybilGoods add_waibil_goods = null;
        
        public Waybil()
        {
            InitializeComponent();
            Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
            base_.fill_combo(comboClients, "Clients", "ClientsName");
            base_.fill_combo(comboDrivers, "Drivers", "DriversName");
            base_.fill_combo(comboModel, "Cars", "CarsModel");
        }
 
        private void Create_Click(object sender, EventArgs e)
        {
            client = comboClients.SelectedItem.ToString();
            driver = comboDrivers.SelectedItem.ToString();
            carModel = comboModel.SelectedItem.ToString();
            carKey =Key.Text.ToString();
            Word.Application word = new Word.Application();
            word.Visible = true;
            Word.Document doc = word.Documents.Add();
            doc.Select();
            word.Selection.TypeText(client);
            word.Selection.TypeText(driver);
            word.Selection.TypeText(carModel);
            word.Selection.TypeText(carKey);
        }
 
        private void Add_Click(object sender, EventArgs e)
        {
            add_waibil_goods = new AddWaybilGoods(this);
            
            add_waibil_goods.Show();
            add_waibil_goods.Focus();
        }
 
        private void comboModel_SelectedIndexChanged(object sender, EventArgs e)
        {
            carModel = comboModel.SelectedItem.ToString();
            Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
            base_.find_item(Key, "Cars", "CarsKey", "CarsModel", carModel);
        }
    }
form2
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
public partial class AddWaybilGoods : Form
    {
        Waybil w_b = null;
        public string GoodsName1 = null;
        public string GoodsPrice1 = null;
        public string GoodsCount1 = null;
 
        public AddWaybilGoods(Waybil wb)//form1
        {
            InitializeComponent();
            w_b= wb;
            Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
            base_.fill_combo(AddWaybilGoods1, "Goods", "GoodsName");
        }
 
        public void Добавить_Click(object sender, EventArgs e)
        {
            GoodsCount1 = Count.Text.ToString();
            w_b.GoodsName2 = GoodsName1;
            w_b.GoodsPrice2 = GoodsPrice1;
            w_b.GoodsCount2 = GoodsCount1;
            this.Close();
        }
 
        private void AddWaybilGoods1_SelectedIndexChanged(object sender, EventArgs e)
        {
            GoodsName1 = AddWaybilGoods1.SelectedItem.ToString();
            Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
            base_.find_item(Price, "Goods","GoodsPrice", "GoodsName", GoodsName1);
            GoodsPrice1 = Price.Text.ToString();
        }
    }
А объект, в моем случае datagridview, с первой формы должен иметь модификатор доступа public. На будущее, если у кого-то тож подобная проблема будет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.05.2014, 07:53
Помогаю со студенческими работами здесь

Ошибка при передачи данных из другой формы, используя свойство 'родитель'
Помогите, пожалуйста! В теме "Ответы на 7 самых частых вопроса по WinForms" в пункте 2 расписан 5-й вариант передачи данных из другой...

Передача данных между формами
народ помогите, нужно с Form2 (TextBox1) передать данные на другую форму Form1 в richTextBox1 как это сделать?

Передача данных между формами
Есть Форма1. На ней есть текстбокс1 и баттон1. При нажатие баттон1 появляется Форма2, на которой есть тоже текстбокс2 и баттон2. В...

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru