Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086

Как передать данные в обработчик события

03.12.2013, 12:27. Показов 4040. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
   public partial class MainForm : Form
    {
        public Timer timer = new Timer();
        public Settings setting;
        double[] valuetags;
        
        public MainForm()
        {
            InitializeComponent();
        }
 
        private void MainForm_Load(object sender, EventArgs e)
        {
            try
            {
                Settings setting = new Settings();
                label1.Text = setting._servise;
                label2.Text = setting._topic;
                label3.Text = "" + setting._counttags;
                setting.connectTOservise();
                
                timer.Interval = 1000;
                timer.Tick += timer_Tick;
                timer.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information); return; 
            }
        }
 
        private void timer_Tick(object sender, EventArgs e)
        {
            double [] valuetags = new double[setting._counttags];   //   вот тут  возникает nullreference 
            valuetags = setting.readtegs();
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.12.2013, 12:27
Ответы с готовыми решениями:

Как передать в обработчик события значение программно созданного pictureBox?
как передать в обработчик события значение программно созданного pictureBox? суть прилоения оно ищет в папке изображения, потом добавляет...

Как подавать внешние данные в обработчик события таймера?
Как подавать внешние данные в метод, отрабатывающий по действию таймера System.Timers.Timer? У меня есть метод, который срабатывает по...

Как передать данные из одного события формы в другое?
На форме находятся два textbox, button и picturebox. Нужно по нажатию кнопки из textbox забрать координаты X и Y и нарисовать круг по этим...

12
 Аватар для lpvoid
324 / 307 / 59
Регистрация: 06.03.2013
Сообщений: 869
03.12.2013, 12:33
EVG-1980, создать свое событие. однако так делать совершенно не нужно, eventargs не для того. сделайте массив глобальным для класса.

Добавлено через 46 секунд
хотя... у вас же сеттинги не инициализированы.
C#
1
public Settings setting = new Settings();
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
03.12.2013, 12:51  [ТС]
Сеттинг инициализирован в 16 строке
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
03.12.2013, 12:55
Отключите таймер Enabled = false

И добавьте строчку
C#
1
2
timer.Enabled = true;
timer.Interval = 1000;
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
03.12.2013, 12:58  [ТС]
Grishaco,

Что это мне даст?
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
03.12.2013, 13:24
Цитата Сообщение от EVG-1980 Посмотреть сообщение
Что это мне даст?
Решит вашу проблему!

При старте формы таймер включен, он ждет 0,1 секунды и дергает метод, но у вас еще ничего не проинициализировалось, как вариант перенесите создание настроек до создания таймера

C#
1
2
3
4
5
public MainForm()
        {
            Settings setting = new Settings();
            InitializeComponent();
        }
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
03.12.2013, 13:55  [ТС]
Grishaco, перенес не помогло

у меня не передается setting._counttags

в обработчик
C#
1
2
3
4
5
 private void timer_Tick(object sender, EventArgs e)
        {
            double [] valuetags = new double[setting._counttags];   //   вот тут  возникает nullreference 
            valuetags = setting.readtegs();
        }
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
03.12.2013, 14:04
EVG-1980, Что-то вы не договариваете либо лукавите. Ваш код - рабочий.
Показывайте классы Settings и вторую часть класса MainForm.
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
03.12.2013, 15:19  [ТС]
turbanoff,

Кликните здесь для просмотра всего текста
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using NDde.Client;
 
namespace ClientWin
{
    public partial class MainForm : Form
    {
 
        private Timer timer = new Timer();
        public Settings setting;
        int i = 0;
        public double[] valuetags;
        private DdeClient client;
 
        public MainForm()
        {
            Settings setting = new Settings();
            InitializeComponent();
            label1.Text = setting._servise;
            label2.Text = setting._topic;
            label3.Text = (setting._counttags).ToString();
            double[] valuetags = new double[setting._counttags];
 
            try
            {
            client = new DdeClient(setting._servise, setting._topic);
            client.Connect();
            client.Disconnected += client_Disconnected;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка подключения", MessageBoxButtons.OK, MessageBoxIcon.Information); return; }
            
            for (int i = 0; i < setting._counttags; i++) valuetags[i] = Convert.ToDouble(client.Request(setting._tags[i], 60000));
 
            label5.Text = "" + valuetags[0];
 
            timer.Interval = 1000;
            timer.Tick += timer_Tick;
            timer.Start();
        }
 
 
      
        private void timer_Tick(object sender, EventArgs e)
        {
            label4.Text = i.ToString();
            if (i == 10)
            {
            for (int j = 0; j < setting._counttags; j++) valuetags[j] = Convert.ToDouble(client.Request(setting._tags[j], 60000));
            label5.Text = (valuetags[0]).ToString();
                i = 0;
            }
            i++;
        }
 
        private void client_Disconnected(object sender, DdeDisconnectedEventArgs args)
        {
            client.Disconnect();
            MessageBox.Show("Отключение", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
 
 
        public class Settings
        {
            public string _servise;
            public string _topic;
            public string[] _tags;
            public int _counttags = 0;
           
            private const string filecfg = "cfg.ini";
            private const string filetags = "tags.ini";
            
 
            public bool Checkfile(string fileName)
            {
                if (!File.Exists(fileName)) return false;
                else return true;
            }
 
 
            public Settings()
            {
                if (!Checkfile(filecfg))
                {
                    using (StreamWriter sw = new StreamWriter(File.Open(filecfg, FileMode.Create)))
                    {
                        sw.WriteLine("view");
                        sw.WriteLine("Tagname");
                        sw.Close();
                    }
                }
 
                if (!Checkfile(filetags))
                {
                    using (StreamWriter sw = new StreamWriter(File.Open(filetags, FileMode.Create)))
                    {
                        sw.WriteLine("$DateString");
                        sw.Close();
                    }
                    return;
                }
 
                using (StreamReader sr = new StreamReader(File.Open(filecfg, FileMode.Open)))
                {
                    this._servise = sr.ReadLine();
                    this._topic = sr.ReadLine();
                    sr.Close();
                }
                
                
                this._tags = File.ReadAllLines(filetags);
                this._counttags = this._tags.Length;
                if (this._counttags == 0) { MessageBox.Show("Нет тегов для чтения", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Information); return; }
            }
       }
 
    } // class
}



как j=10 выкидывает исключение

Добавлено через 9 минут
Ссылка на объект не указывает на экземпляр объекта.
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
03.12.2013, 15:32
Переместите инициализацию коллекции туда же

C#
1
2
3
            Settings setting = new Settings();
            double[] valuetags = new double[setting._counttags];
            InitializeComponent();
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
03.12.2013, 15:33
setting объявлен 2 раза в 17 и 24 строке. Объявление и инициализация в 24 строке создают setting, видный только внутри конструктора формы, тогда как setting, объявленный в 17 строке, остаётся неинициализированным
3
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
03.12.2013, 15:36
Цитата Сообщение от ViterAlex Посмотреть сообщение
setting объявлен 2 раза в 17 и 24 строке. Объявление и инициализация в 24 строке создают setting, видный только внутри конструктора формы, тогда как setting, объявленный в 17 строке, остаётся неинициализированным
Точно, а мы с turbanoff, даже не заметили.
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
03.12.2013, 16:43  [ТС]
ViterAlex, точно запарился , спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2013, 16:43
Помогаю со студенческими работами здесь

Как в одном обработчике события запустить другой обработчик события
Есть список listView1, который заполняется из массива PeopleListprivate void listView1_RetrieveVirtualItem(object sender,...

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

Как в функцию-обработчик события передать аругменты?
В переменную записана функция с параметрами. Как её вызвать в качестве обработчика события? Если прописать аргументы сразу, то...

Как передать аргументы в функцию-обработчик события?
Как передать аргументы в функцию-обработчик события? Например: &lt;button id=&quot;btn1&quot;&gt;1&lt;/button&gt; &lt;button...

Как передать из формы в обработчик данные из цикла?
Скажите как передать из формы в обработчик данные что то типа цикла или массива?? вопрос я думаю не новый но на своем примере проще) ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru