Merscy Ответов: 2

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


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

Я погуглил почти все, что пришло бы на ум, но ничего не было связано с моей проблемой или работало.

Так что если кто-то сможет мне помочь, это будет потрясающе, потому что я буквально понятия не имею, что делать!!

Что я уже пробовал:

Я попробовал это сделать из того, что нашел в google:

Я создал общий класс...

Public Class dgvUserData
Public Shared Dt As New DataTable
Public Shared Bs As New BindingSource

End Class


На форме просмотр всех данных я закодировал:

Public Class frmViewAllData
    Sub LoadData()
    SharedClass.Dt.Clear()
    SharedClass.Dt =
    SharedClass.Bs.DataSource = SharedClass.Dt
    dgvUserData.Datasource = SharedClass.Bs
    End Sub
    End Class


На бланке с таймером и диаграммой я закодировал:

Public Class frmMonitorHeartRate
    Sub LoadData()
    dgvUserData.DataSource = SharedClass.Bs
    End Sub
    End Class

2 Ответов

Рейтинг:
12

OriginalGriff

Во - первых, вы не должны использовать Shared для этого- это плохая идея.

Вместо этого вы должны создать свойство в вашем frmMonitorHeartRate, которое ваш frmViewAllData использует для передачи ему исходного DataTable (предполагая, что экземпляр frmMonitorHeartRate создан frmViewAllData, который вы не показываете).

Затем в frmViewAllData таймер, вы можете проштудировать таблицу (используя для каждой строки, собственность, и доступ к каждой ячейке строки(indexOfDataColumnYouAreIntestedIn) для двух данных элементов, которые необходимо для вашей диаграммы - значения X и Y и отображения их на выбранном графике.

Звучит сложно? На самом деле это не так. Это просто случай, когда вы начинаете понимать, как все работает!
Взгляните на это.

Форма, которая создает экземпляр другого:

MyForm mf = new MyForm();
mf.Show();
Это "родитель", другая форма - "Ребенок".
(Это не подразумевает никаких формальных отношений MDI)

Передача информации между двумя формами, Часть 1: Родитель-Ребенок[^]
Передача информации между двумя формами, Часть 2: Ребенок-Родитель[^]
Передача информации между двумя формами, Часть 3: Ребенок ребенку[^]

Код написан на языке C#, но он довольно очевиден, и Преобразователь кода C# в VB и VB в C# – Telerik[^] преобразует все, с чем вы не можете справиться.
Вам понадобится только первый, но поскольку я понятия не имею, как работает ваше приложение, вполне возможно, что и два других тоже помогут.


Merscy

Привет,
Я попробовал их, но они не сработали

OriginalGriff

Они явно работают, демонстрационный код работает нормально.
Так что проблема явно в том, как вы их реализовали ... и мы понятия не имеем, что ты сделал!

Merscy

Привет,
прости, что я не пыталась быть грубой или что-то в этом роде. Да, вы правы, проблема заключается в том, что я думаю, что не могу сказать, какой из них связан с моим и как я должен их реализовать. Мне очень жаль, что это, вероятно, расстраивает, но если это возможно, не могли бы вы сказать мне, какой из них какой?

So pretty much, the frmMonitorHeartRate is the form that receives all the user input and the frmViewAllData is the form that has a dgvUserData which is a data table that shows all of the data that the user has entered. However, going back to frmMonitorHeartRate, there is a timer and a graph in there and I would like all the scores from the data table (dgvUserData) in the other form to be transferred to the timer in frmMonitorHeartRate. Once I manage to do that I've pretty much done the coding part for the timer to transfer the data to the chart, however, I'm not sure within the timer if I should mention dgvUserData (the name of the data table from the other form) or not. So with what I tried it kept on giving errors with when I mentioned the object like the timer or the dgvUserData or the parts where you give the codes about the form.

Если бы вы могли помочь мне разобраться с ними, это было бы здорово!!

Мне очень жаль, что я причиняю вам боль, и я очень благодарен вам за то, что вы уже уделили мне время. Хотел бы я знать, есть ли на самом деле способ показать вам, в чем моя проблема с самого начала.

OriginalGriff

Итак, какая форма создает и отображает другую?

Merscy

ммм, я не совсем понимаю, что вы имеете в виду, но таблица данных (dgvUserData) из формы frmViewAllData получает пользовательский ввод из формы frmMonitorHeartRate...

OriginalGriff

Где - то в вашем коде есть такие строки:

Form2 f2 = new Form2();
f2.Show();
Или это может быть форма 1 вместо этого.
Найдите это, и вы узнаете, кто является "родителем"

Merscy

Подождите, это те вещи, о которых вы говорите в визуальных основах?? У меня такое чувство, что вы говорите на C#, и они могут отличаться в этом аспекте...

OriginalGriff

Это один и тот же процесс, одни и те же вызовы независимо от VB или C# - есть даже онлайн-конвертеры для их перевода:
http://converter.telerik.com/
Например.

На детском языке мой последний пример кода был бы следующим:

Dim f2 As New Form2
f2.Show()


Понимаете, что я имею в виду?

Merscy

О да, я понимаю, что вы имеете в виду, но я не могу найти ничего подобного. Извините, я чувствую себя таким тупым, должен ли я был реализовать это или это уже должно быть там? Потому что если бы я должен был реализовать это, это дало бы мне ошибку, и если бы она уже была там, то я не смог бы ее найти...

OriginalGriff

У вас есть две видимые формы, да?
Таким образом, один (вероятно) будет открыт для вас автоматически, второй вы должны были открыть для себя. Который требует вызова либо Show, либо ShowDialog на экземпляре формы. Так что подумайте: когда открывается вторая форма? Где ты сказал ему это сделать?

Merscy

О да, я вас понял. В этом случае вторая форма-frmViewAllData. Как вам нужно нажать кнопку в frmMonitorHeartRate, чтобы попасть в frmViewAllData, так и в первой форме (frmMonitorHeartRate) Я сделал:

Частный суб btnViewAllData_Click(отправитель как объект, e Как EventArgs) обрабатывает btnViewAllData.Щелчок
frmViewAllData.Показать()
Конец Подводной Лодки

Однако, чтобы вы знали, у меня также есть форма главного меню, которая просто переносит пользователя как в frmMonitorHeartRate, так и в frmViewAllData.

OriginalGriff

Это тот самый!
Таким образом, AllData-это дочернее свойство: создайте там свойство, которое возвращает DataTable, и заполните его при использовании Геттера.
Тогда все, что вам нужно сделать, это использовать текущий экземпляр формы для доступа к нему:

Дим ДТ в качестве объекта DataTable = frmViewAllData.Метода GetData

Используйте это в таймере и посмотрите, делает ли он то, что вы хотите!

Merscy

Эй там,

Спасибо. Я думаю, что все хорошо, но в таймере есть ошибка, и я предполагаю, что это потому, что я сделал эти кодировки до того, как сделал все это. Как ты думаешь, что мне с этим делать?

Вот этот код:

Private Sub tmrMonitor_Tick(sender As Object, e As EventArgs) обрабатывает tmrMonitor.Галочка
Дим ДТ в качестве объекта DataTable = frmViewAllData.GetdgvUserData
tmrMonitor.Стоп()
Дим, а как целое
Если счетчик < dgvUserData.Тогда Подсчет Строк
Целое число.Метод tryparse(dgvUserData.Строки(счетчик).Ячейки(0).значение, а)

lblPulseValue.Текст = а.Метод toString()
Если (a > max) Затем
Ящик для сообщений.Шоу("High")
ElseIf (a < min) Затем
tmrMonitor.Стоп()
Ящик для сообщений.Шоу("Низкий")
Конец, Если
tmrMonitor.Начать()
счетчик = счетчик + 1
хртдэйли.Серия("Удары В Минуту").Точки.Эдди(а.Метод toString)
Еще
tmrMonitor.Стоп()
Конец, Если
Конец Подводной Лодки

Именно в этих строках была допущена ошибка:

Если счетчик < dgvUserData.Тогда Подсчет Строк
Целое число.Метод tryparse(dgvUserData.Строки(счетчик).Ячейки(0).значение, а)

Ошибка связана с dgvUserData, и я попытался заменить их на dt, но это тоже не помогло...

OriginalGriff

:вздыхать:
Вернитесь к документации TryParse и сравните пример с вашим кодом...

Рейтинг:
0

Garth J Lancaster

Хорошо, похоже, теперь вам нужно загрузить это

Dt As New DataTable
данные-таблица из базы данных access - здесь есть ключ или около того sql - vb.net загрузка изображений из базы данных Access в DataTable? - переполнение стека[^]


Merscy

Привет,

Я попробовал, но ничего не вышло

Garth J Lancaster

Такая реакция на себя и ОГА (другое решение) примерно так же полезна, как сиськи на кабане - решение ОГА, в частности, работает в зависимости от отношений между формами - родитель-ребенок и т. д.. возможно, вам следует обновить свой вопрос с помощью вашего кодирования в соответствии с примечаниями OG - use Улучшить вопрос

Merscy

Привет,

Да, я понимаю и сожалею об этом. Вы правы, и я не пытался быть грубым или что-то в этом роде, и я знаю, что это может быть неприятно, но я попытался объяснить, почему они не работали на меня в ответе ОГА, и если бы вы могли помочь мне с этим, это было бы здорово. Я почти уверен, что перепробовал все из них, но он продолжал давать ошибки с распознающей частью, я думаю... Кроме того, Спасибо за ваше время уже и так...