Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 423

Событие для динамического контролла

27.08.2019, 12:08. Показов 3325. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Есть такая проблема у новичка. Динамически создан chart1, ось X которого - это время. Нужно при клике мышкой получить координаты оси X. Я написал обработчик событий
C#
1
2
3
chart1.MouseClick += new MouseEventHandler(chart)
void chart(object sender, MouseEventArgs e)
{};
Подскажите, пжлста, как переделать обработчик на chart1.MouseClick += new MouseEventArgs ... потому что (я думаю) иначе метод HitTest будет не правильно выдавать координаты.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2019, 12:08
Ответы с готовыми решениями:

Вызвать событие другого контролла
Нужно в коде при else запускать действие, которое у меня уже есть на label при клике. Просто не хочу повторять код. Заранее спасибо.

Как привязать событие к свойству контролла
есть контрол у него есть свойство необходимо создать событие и привязать данное событие к свойству как создавать события нашел а вот как...

Событие для динамического контрола
Как создать событие для контрола, которыи был создан динамически? Т.е. плагин создает контрол в основной программе. Хочу , чтобы в плагине...

32
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 423
27.08.2019, 16:48  [ТС]
Студворк — интернет-сервис помощи студентам
SeIZVeIZ, переделал Ваш код
C#
1
2
3
4
5
6
7
8
var hitTestResult = chrt.HitTest(e.X, e.Y);
            if (hitTestResult.Object != null) 
            {
               if (hitTestResult.Object is DataPoint point)
               {
                  DateTime xValue = DateTime.FromOADate(point.XValue);
               }
            }
Первое условие выполняется. Не выполняется второе. Выходит в "моей студии прописан" метод HitTest. Студия не ругается.
0
91 / 65 / 18
Регистрация: 09.12.2015
Сообщений: 211
27.08.2019, 16:49
Хотя у меня вроде бы ничего не меняется. Но кликать нужно именно по графику.
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 423
27.08.2019, 16:54  [ТС]
BlackEric,
C#
1
series.ChartType = SeriesChartType.Candlestick;
За код спасибо. Буду разбираться.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
27.08.2019, 16:54
DLD, Запустите под отладкой и посмотрите какого типа у Вас объект hitTestResult.Object возможно там вообще не то что вы ожидаете
0
91 / 65 / 18
Регистрация: 09.12.2015
Сообщений: 211
27.08.2019, 16:56
Я бы рекомендовал отладить мой пример в отдельном проекте, а потом уже переносить в основной. Что-то у вас где-то с заполнением косячит судя по всему.
1
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
27.08.2019, 17:01
DLD, у HitTest есть свойство hitTestResult.ChartElementType в нём содержится тип того что Вам приходит, если там не DataPoint то вы нажимаете не по графику, а скорей всего по свободной области "где-то рядом"

p.s. список того куда можно так "нажать": https://docs.microsoft.com/ru-... mework-4.8
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 423
27.08.2019, 17:02  [ТС]
SeIZVeIZ, студия не ругается. Переделал Ваш код (чтобы найти причину)
C#
1
2
3
4
5
6
7
8
9
var hitTestResult = chrt.HitTest(e.X, e.Y);
            if (hitTestResult.Object != null) 
            {
               if (hitTestResult.Object is DataPoint point)
               {
                  DateTime xValue = DateTime.FromOADate(point.XValue);
                  VerticalLineText.Text = xValue.ToString();
               }
            }
Первое условие - выполняется, второе - нет. Выходит метод HitTest "прописан в моей студии"
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
27.08.2019, 17:04
DLD, я Вам про студию уже ничего не говорил больше, читайте внимательнее что от Вас хотят.
0
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 423
27.08.2019, 17:05  [ТС]
SeIZVeIZ, диаграмма на весь экран... Промахнуться мимо графика - невозможно
Извините что был невнимателен
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
27.08.2019, 17:08
DLD, ещё раз на пальцах:
1) Ставите точку остановке на строке if (hitTestResult.Object is DataPoint point)
2) Нажимаете в студии F5
3) Нажимаете в программе туда куда вы жмёте
4) Как только попадает на точку остановки наводите на hitTestResult разворачиваете окно и смотрите что написано в ChartElementType
5) Показываете это значение сюда
1
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 423
27.08.2019, 17:25  [ТС]
SeIZVeIZ,
C#
1
ChartElementType = PlottingArea
Добавлено через 1 минуту
Прописал такой код
C#
1
var d = chrt.Series[0].Points.First();
вот значение переменной d "{{X=0, Y={110.698, 110.776, 110.762, 110.701}}}". Но вместе с тем d.AxisLabel правильно указывает на дату "07.08.2017 01:00:00.000". Вот бы как-то извлечь.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
27.08.2019, 17:29
Лучший ответ Сообщение было отмечено DLD как решение

Решение

Цитата Сообщение от DLD Посмотреть сообщение
ChartElementType = PlottingArea

а теперь читаем:
Область построения, которая представляет собой область диаграммы, исключая оси, подписи и прочие подобные элементы. Также исключаются области, которые могут быть заняты точками данных.
внимание вопрос: куда вы нажимаете? (подсказка это не туда куда бы Вам хотелось)

Добавлено через 1 минуту
Покажите графический Ваш график и куда вы на нём нажимаете
1
5 / 4 / 2
Регистрация: 24.09.2016
Сообщений: 423
27.08.2019, 17:55  [ТС]
SeIZVeIZ, график в моем пост №13 на первой странице этой темы. Выходит мне нужно сначала доработать основной код, а потом рисовать линии. Обратил внимание. Tab и chart добавляются динамически без проблем. Но когда рисую линии на chart (если создано более одной вкладки !) - то они появляются на тех chart, которые на "неоткрытых" в данный момент вкладках. Спасибо большое за участие.

Добавлено через 8 минут
Видимо координата X попадает как-то в код с того Tab (созданного, но не открытого), где еще нет chart
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2019, 17:55

Изменить свойства контролла
Народ, подскажите как изменить свойства контролла по его именю. Например. Мне нужно динамически в программе поменять свойство Visible...

Описание свойства контролла
Вопрос таков кто писал контроллы при написании свойства, что нужно написать чтобы выдать описание в подсказке свойства при готовом...

Ограничение области перемещение контролла
Здравствуйте! В общем нужно сдлеать так, что бы pictureBox2 не могла выйти за пределы pictureBox1, при этом она не скакала в центр, и без...

Размещение программно контролла на форме
Всем привет. Подскажите можно или нет реализовать задуманное, а если ДА, то как. Есть много своих котроллов в виде dll. Все они созданы на...

Сохранение динамически созданного контролла
Как это можно осуществить и вообще возможно ли?


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru