Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 04.10.2018
Сообщений: 11
.NET 4.x

Ссылка на объект не указывает на экземпляр объекта

04.10.2018, 22:11. Показов 4344. Ответов 5

Студворк — интернет-сервис помощи студентам
Всем привет!
Мне необходимо написать следующее приложение: на форме один по периметру бегает Label и плавно меняет свой цвет. На второй форме находится группа переключателей Включить и Выключить. При нажатии на Выключить label останавливается, при нажатии на Включить- продолжает перемещаться. Вот код:
Form 1:
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
           
        }
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
        enum Direction { Right, Down, Left, Up };
        Direction direction = Direction.Right;
 
 
        public  void timer1_Tick(object sender, EventArgs e)
        {
            switch (direction)
            {
                case Direction.Right:
                    label1.Left += 10;
                    break;
                case Direction.Down:
                    label1.Top += 10;
                    break;
                case Direction.Left:
                    label1.Left -= 10;
                    break;
                case Direction.Up:
                    label1.Top -= 10;
                    break;
            }
            if (label1.Left > ClientRectangle.Width - label1.Width)
            {
                direction = Direction.Down;
                label1.Left = ClientRectangle.Width - label1.Width;
            }
            if (label1.Top > ClientRectangle.Height - label1.Height)
            {
                direction = Direction.Left;
                label1.Top = ClientRectangle.Height - label1.Height;
            }
            if (label1.Left < 0)
            {
                direction = Direction.Up;
                label1.Left = 0;
            }
            if (label1.Top < 0)
            {
                direction = Direction.Right;
                label1.Top = 0;
            }
            switch (direction)
            {
                case Direction.Right:
                    label1.ForeColor = Color.FromArgb(0, (255 - label1.Left * 255 / (ClientRectangle.Width - label1.Width)), label1.Left * 255 / (ClientRectangle.Width - label1.Width));
                    break;
                case Direction.Down:
                    label1.ForeColor = Color.FromArgb(label1.Top * 255 / (ClientRectangle.Height - label1.Height), 0, 255);
                    break;
                case Direction.Left:
                    label1.ForeColor = Color.FromArgb(255, (-label1.Left * 255 / (ClientRectangle.Width - label1.Width) + 255), (label1.Left * 255 / (ClientRectangle.Width - label1.Width)));
                    break;
                case Direction.Up:
                    label1.ForeColor = Color.FromArgb(label1.Top * 255 / (ClientRectangle.Height - label1.Height), 255, 0);
                    break;
            }
 
        }
        
 
        public void Form1_Shown(object sender, EventArgs e)
        {
            Form2 newForm = new Form2(this);
            newForm.ShowDialog();
        }
    }
}
Form 2:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp3
{
    public partial class Form2 : Form
    {
        public Form1 form1;
 
        public  Form2(Form1 form)
        {
            InitializeComponent();
            
        }
        
 
        public void Form2_Load(object sender, EventArgs e)
        {
 
        }
 
 
        public void radioButton1_Click(object sender, EventArgs e)
        {
            form1.timer1.Start();
        }
 
        public void radioButton2_Click(object sender, EventArgs e)
        {
            form1.timer1.Stop();
        }
    }
}
Код компилируется, но в строках
C#
1
form1.timer1.Start();
и
C#
1
form1.timer1.Stop();
пишет что исключение не обработано и выдает сообщение System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Не могу понять, в чем ошибка
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2018, 22:11
Ответы с готовыми решениями:

Ссылка на объект не указывает на экземпляр объекта
Всем доброго времени суток! Программирование изучается в слепую. В университете показывают, как сменить цвет кнопки, а на дом задают...

Ссылка на объект не указывает на экземпляр объекта
В main есть данный код: rb = new RadioButton; for (int i = 0; i &lt; rb.Length; i++) { rb...

Ссылка на объект не указывает на экземпляр объекта
Не могу записать данные из dataGridView пишет &quot;Ссылка на объект не указывает на экземпляр объекта.&quot; using System; using...

5
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
04.10.2018, 22:17
Цитата Сообщение от Boris_235 Посмотреть сообщение
Не могу понять, в чем ошибка
Вы в поле form1 ничего не записали.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
04.10.2018, 22:19
Boris_235, где инициализация переменной form1 в классе Form2? В конструктор значение передается, но оно никуда не записывается.
1
0 / 0 / 0
Регистрация: 04.10.2018
Сообщений: 11
04.10.2018, 22:31  [ТС]
Дописал в Form 2
C#
1
public Form1 form1 = new Form1();
Программа запускается, но при нажатии на Выключить (radioButton1_Click) ничего не происходит
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
04.10.2018, 22:39
Лучший ответ Сообщение было отмечено Boris_235 как решение

Решение

Boris_235, правильно. Ведь так ты создаешь новую невидимую форму вместо того чтобы работать с существующей Form1. Нужно было так
C#
1
2
3
4
5
6
7
8
9
    public partial class Form2 : Form
    {
        public Form1 form1;
 
        public  Form2(Form1 form)
        {
            InitializeComponent();
            form1 = form;
        }
1
0 / 0 / 0
Регистрация: 04.10.2018
Сообщений: 11
04.10.2018, 22:42  [ТС]
Спасибо огромное! Все работает. Ошибку свою понял
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.10.2018, 22:42
Помогаю со студенческими работами здесь

Ссылка на объект не указывает на экземпляр объекта
Доброго времени суток, форумчане! Перешёл на VS 2017, раньше работал в VS 2015. Создал новый проект, чтобы перенести свой старый. Всё...

Ссылка на объект не указывает на экземпляр объекта
Налепил вот такой код foreach (TabPage page in tabControl1.TabPages) // переходим по вcем страницам TabControl { ...

Ссылка на объект не указывает на экземпляр объекта
Всем доброго времени суток, заранее прошу не ругаться, ибо только учусь) Задача такая: при нажатии на кнопку на первой форме открывается...

Ссылка на объект не указывает на экземпляр объекта
Не могу понять, почему именно я славлваю NullReferenceException.. Ругается на эту строчку(25-я в коде): docText =...

Ссылка на объект не указывает на экземпляр объекта
Что не так?? static void Main(string args) { BookLinkedList b1 = new BookLinkedList();...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru