Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 286

NullReferenceException при вызове делегата

28.06.2014, 19:18. Показов 4821. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
/// Создан новый класс.
public static void ParsGrups()
{
 var form = Form1.ActiveForm as Form2;
 form.textBox6.Invoke((MethodInvoker)delegate { form.textBox6.AppendText("[" + DateTime.Now.ToLongTimeString() + "] Я "   });
     
}
При вызове бывает сработает, бывает нет, в чем дело?
Скрин ошибки:
Кликните здесь для просмотра всего текста
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.06.2014, 19:18
Ответы с готовыми решениями:

NullReferenceException при клике на ComboBox
Добрый день! Форма работает нормально пока не кликаю по ComboBox. Выдает ошибку: А код такой: using System; using...

NullReferenceException при обращении к контролу по имени
Здравствуйте. Собственно код: (this.Controls as Label).Text = "+" + Array_Res.ToString(); Ошибка - Ссылка на объект не...

Nullreferenceexception Ошибка при сохранении файла
Привет всем, сейчас лето и я решил начать учить свой любимый С#, столкнулся с такой проблемой. P.S программка для создания скриншотов....

37
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
03.07.2014, 23:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от dimasik9281 Посмотреть сообщение
как с классса обратиться к форме.
dimasik9281, все просто!
На выбор, два варианта:
1. static class;
2. event's.
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 286
04.07.2014, 02:08  [ТС]
Пример можно?
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 286
05.07.2014, 23:06  [ТС]
прошу вас помощь!
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.07.2014, 08:54
dimasik9281, напрямую обратиться из класса к форме никак (то есть можно, но это не есть хорошо). Если нужна моментальная реакция формы на какое-либо действие в классе, то нужно использовать события.
Примерно так. На форме кнопка и текстовое поле, с именами по умолчанию. Никаких обработчиков не создавать!
Код формы
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            button1.Click += delegate { ClickButton(); };
        }
        void ClickButton()
        {
            TestClass test = new TestClass();
            test.classEvent += delegate(object sender, EventArgs e) { MessageFromClass(sender); };
            test.Work();
        }
        void MessageFromClass(object sender)
        {
            this.Invoke((Action)delegate { textBox1.Text = ((TestClass)sender).classResult.ToString(); });
        }
    }
}
Код класса
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.Threading;
 
namespace WindowsFormsApplication3
{
    class TestClass
    {
        public event EventHandler classEvent;
        public int classResult { get; set; }
 
        public void Work()
        {
            for (int i = 0; i < 10; i++)
            {
                classResult++;
                Thread.Sleep(500);
            }
            if (classEvent != null)
                classEvent(this, EventArgs.Empty);
        }
    }
}
Когда заканчивается цикл в работающем методе экземпляра класса, срабатывает событие, на которое в форме присутствует подписка и обработчик.
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 286
06.07.2014, 16:28  [ТС]
Вот, я хочу сделать вывод текста в текстбокс из класса, как это сделать?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.07.2014, 16:50
Цитата Сообщение от dimasik9281 Посмотреть сообщение
я хочу сделать вывод текста в текстбокс из класса, как это сделать?
dimasik9281, так я же показал вам пример...
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 286
06.07.2014, 16:54  [ТС]
C#
1
2
3
4
5
public static void Spam()
       {
            var form = Form1.ActiveForm as Form2; 
           form.richTextBox2.Invoke((MethodInvoker)delegate { form.richTextBox2.Text="sdfsdfsdfsdf"; });
}
ВОт класс. нужно вывести сообщение это в richTextBox2
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.07.2014, 16:57
Цитата Сообщение от dimasik9281 Посмотреть сообщение
ВОт класс.
Где??? Никакого класса я тут в упор не вижу...
Вижу статический метод Spam, вижу манипулирование переменными форм, а класса нет...
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 286
06.07.2014, 17:00  [ТС]
извините, из статического метода вывести текст
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.07.2014, 17:01
Цитата Сообщение от dimasik9281 Посмотреть сообщение
из статического метода вывести текст
В каком классе расположен данный метод?
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 286
06.07.2014, 17:03  [ТС]
C#
1
2
3
4
5
6
7
8
public static class Fred
{
public static void Spam()
       {
            var form = Form1.ActiveForm as Form2; 
           form.richTextBox2.Invoke((MethodInvoker)delegate { form.richTextBox2.Text="sdfsdfsdfsdf"; });
}
}
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.07.2014, 17:13
dimasik9281, вот так.
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
/*
 * Сделано в SharpDevelop.
 * Пользователь: Administrator
 * Дата: 06.07.2014
 * Время: 17:04
 */
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
 
namespace dimasik
{
    /// <summary>
    /// Description of MainForm.
    /// </summary>
    public partial class MainForm : Form
    {
        public MainForm()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();
            
            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //
            button1.Click+= delegate 
            {
                Fred.staticEvent+= delegate 
                { 
                    this.Invoke((Action)delegate
                                {
                                    textBox1.Text="ABRACADABRA!!!";
                                });
                };
                Fred.Spam();
            };
        }
    }
    public static class Fred
    {
        public static event EventHandler staticEvent;
        public static void Spam()
        {
            if(staticEvent!=null)
                staticEvent(null,EventArgs.Empty);
        }
    }
}
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 286
06.07.2014, 17:16  [ТС]
а кароче, не как* ??
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.07.2014, 17:18
Цитата Сообщение от dimasik9281 Посмотреть сообщение
а кароче, не как* ??
А что вам тут не нравится? Результат есть, и причем все верно, без манипулирования кучкой непонятных переменных неизвестного назначения...
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 286
06.07.2014, 17:20  [ТС]
Я начинающий, половину не понимаю, что написано!
можете прокомментировать код?
спасибо!
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.07.2014, 17:25
Цитата Сообщение от dimasik9281 Посмотреть сообщение
можете прокомментировать код?
Пожалуйста...
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
56
57
58
59
60
/*
 * Сделано в SharpDevelop.
 * Пользователь: Administrator
 * Дата: 06.07.2014
 * Время: 17:04
 */
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
 
namespace dimasik
{
    /// <summary>
    /// Description of MainForm.
    /// </summary>
    public partial class MainForm : Form
    {
        //Конструктор формы
        public MainForm()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();
            
            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //
            //Обработчик нажатия кнопки на форме
            button1.Click+= delegate 
            {
                //Подключаем обработчик статичного события в статичном классе
                Fred.staticEvent+= delegate 
                { 
                    //Выводим в текстбокс что нам надо по срабатыванию статичного события в статичном классе
                    this.Invoke((Action)delegate
                                {
                                    textBox1.Text="ABRACADABRA!!!";
                                });
                };
                //Запускаем статичный метод статичного класса
                Fred.Spam();
            };
        }
    }
    //Статичный класс
    public static class Fred
    {
        //Статичное событие
        public static event EventHandler staticEvent;
        //Статичный метод
        public static void Spam()
        {
            //Проверяем есть ли у события подписчики
            if(staticEvent!=null)
                staticEvent(null,EventArgs.Empty); //И вызываем событие
        }
    }
}
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 286
06.07.2014, 17:27  [ТС]
я так, понял, тут на кнопку жмешь и он выводит в текстовое поле.
???
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
06.07.2014, 17:31
Цитата Сообщение от dimasik9281 Посмотреть сообщение
тут на кнопку жмешь и он выводит в текстовое поле.
Именно так. Но метод можно вызвать и не только по нажатию кнопки...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2014, 17:31

System.NullReferenceException при обращении к свойству класса
private void TapOnTile(object sender, GestureEventArgs e) { MatrixTransform.M12 = 0.03; } На...

При работе программы вылетает исключение NullReferenceException
Добрый вечер, при работе программы выливает исключение на строчки вот само исключение //Copy rights are reserved for Akram kamal...

Ошибка System.NullReferenceException при создании динамических контролов
На форме по нажатию на кнопки можно создать до трех контролов DateTimePicker. Их значение нужно передать в класс Class1. Если создается все...

При добавлении в treeview выдает ошибку NullReferenceException не обработано
Добрый день! В списке Gar есть объекты Document с атрибутами Source и Fullname. Я хочу добавить в treeview все документы; при...

При попытке записать в app.config возникает ошибка NullReferenceException
Возникает NullReferenceException. Почему? App.config присутствует в проекте. Configuration configuration = ConfigurationManager. ...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru