Рейтинг:
2
OriginalGriff
Переместите настройку источника данных в форму.Показанное событие и удалить имя формы из инструкции:
DataGridView1.DataSource = dt
И не забудьте где - нибудь выполнить метод GetSitesDB-я не вижу, чтобы он вызывался в вашем коде!
"Спасибо. Если я не помещу NAMS. dt в код в форме 1 ..."
Хорошо, давайте внесем некоторые изменения!
Прекратите загрузку значения DT в DGV в GetSitesDB.
И измените доступ к Form1 Datagridview обратно на "частный" - никогда не делайте элементы управления общедоступными!
У вас есть две формы: NAMS и Form1.
Имена содержат переменную dt и GetSitesDB, а также кнопку, которая отображает форму, да?
Форма 1 содержит DGV.
Итак ... измените конструктор Form1, чтобы он принимал DataTable, и сохраните его в частной переменной под названием "data".
Теперь измените обработчик событий ToolStripButton1_Click, чтобы сделать это:
Dim f1 as New Form1(data)
f1.Show()
(Это предполагает, что GetSitesDB уже был вызван, если нет, то вызовите его и здесь)
В форме 1.Показанное событие, установите источник данных:
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
DataGridView1.DataSource = data
End Sub
Попробуйте и посмотрите, что получится. Дай мне знать!
"изменено на следующее в коде формы 1..."
Что-то вроде этого:
Public Class Form1
Private dataForDisplay As DataTable
Private Sub New()
InitializeComponent()
End Sub
Public Sub New(data As DataTable)
MyBase.New()
InitializeComponent()
dataForDisplay = data
End Sub
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
DataGridView1.DataSource = dataForDisplay
Dim f1 As New Form1(New DataTable)
End Sub
End Class
comalco2000
Спасибо. GetSitesDB вызывается из другого toolstripbutton, и я знаю, что он работает, так как DT заполняется нормально. Вы имеете в виду поставить Datagridview1.datasource=dt перед оператором Form1.show ()??
comalco2000
Я добавил Это в форму 1.....
Частная суб Form1_Shown(отправителя как объект, а равно EventArgs) обрабатывает меня.Показано
DataGridView1.Источник данных = НАМН.ДТ
Конец Подводной Лодки
и удалил его от события form1_load
никакое изменение..... Я знаю, что мне есть чему поучиться в .NET, но я должен сказать, что некоторые вещи просто казались проще в VB6 !
OriginalGriff
Если он вызывается с кнопки, то он выполняется только при нажатии кнопки.
И он загружает данные в переменную экземпляра вашего класса под названием "dt", а не в NAMS.dt.
Вот почему я удалил бит "NAMS" из вашего кода!
Проверьте с помощью отладчика, убедитесь, что метод вызван, и используйте точку останова, чтобы увидеть, есть ли что-нибудь в dt или NAMS.dt, когда вы устанавливаете источник данных.
Вы знаете, как использовать отладчик, да?
comalco2000
В приведенном выше событии Form1_Shown данные видны с помощью визуализатора datatable, когда вы наводите курсор мыши на часть оператора DataGridView1Datasource ... он просто никогда не появляется в DGV при открытии формы...но две дополнительные строки видны, но пусты, так что это почти так же, как если бы строки были добавлены в качестве дополнительных строк в DGV, но просто не заполнены (или видны)
comalco2000
Спасибо. Если я не НАМН.ДТ в код в form1, потом я получаю сообщение об ошибке в окне список ошибок ......как показано ниже.
Я понимаю, что GetSitesDB выполняется только при нажатии кнопки (что я и делаю), и данные, очевидно, загружаются в dt, как это видит datavisualiser, если вы наведете на него курсор мыши.....
Я не очень много играл с отладчиком в .NET, но если я установлю перерыв в конце оператора Form1_Shown, то данные будут находиться в DataGridView.Источник данных при наведении курсора мыши на него в приведенном выше операторе Form1_Shown...и использовании datavisualiser-но символ datavisualiser не появляется при наведении курсора мыши на слово NAMS.dt.....
Описание Кода Серьезности Состояние Подавления Строки Файла Проекта
Ошибка BC30451 'dt' не объявлена. Он может быть недоступен из-за своего уровня защиты. Получить C:\VBnet\Form1.vb 459 Активных
OriginalGriff
Ответ обновлен.
comalco2000
На событие кнопки, которое работает GetSitesDB это не помещается на форме НАМН. Поэтому в коде в NAMS вы можете просто использовать "dt". т.е.
DataGridView1.Источник данных = ДТ
Но если я помещу это утверждение в Form1.... под form1_shown (), то оно вернет ошибку (как уже упоминалось и показано выше), если я не укажу "NAMS. dt"
comalco2000
Является ли моя проблема в том, что я пытаюсь объявить DT общедоступным для всего проекта в начале моего кода NAMs (как показано ниже)? А NAMS.dt, используемый в коде Form1, на самом деле вообще не распознает dt "NAMS"?
Общественные ДТ в качестве нового объекта DataTable
comalco2000
изменено на следующее в коде Form1......
Частная суб Form1_Shown(отправителя как объект, а равно EventArgs) обрабатывает меня.Показано
DataGridView1. DataSource = Данные
дает ошибку
Описание Кода Серьезности Состояние Подавления Строки Файла Проекта
Ошибка BC30112 "System. Data" является пространством имен и не может использоваться в качестве выражения. Получить C:\VBnet\Form1.vb 459 Активных
Конец Подводной Лодки
OriginalGriff
ВБ-это глупо! :смеяться:
Он также нечувствителен к регистру, поэтому данные и данные одинаковы... измените данные на dataForDisplay int во всех трех местах (объявление, загрузка в конструктор и показанное событие)
Моя ошибка - Я обычно использую C#, который чувствителен к регистру, поэтому данные и данные очень разделены.
comalco2000
Хорошо, я думаю, что сделал все, кроме того, что я не полностью понимаю эту линию...
Итак ... измените конструктор Form1, чтобы он принимал DataTable, и сохраните его в частной переменной под названием "data".
Так код стал;
Private Sub ToolStripButton1_Click (sender As Object, e As EventArgs) обрабатывает ToolStripButton1.Щелчок
Dim f1 как новая форма 1(Данные)
Ф1.Показать()
Конец Подводной Лодки
Private Sub GetSitesDB()
Дим ДТ в качестве нового объекта DataTable
Дим dataGridView1 как новый элемент()
Тусклый sr как новый IO.Что Streamreader(ThisFilename)
Dim newline () As String = sr. ReadLine.Split (", " c)
dtrow = 1
ДТ.Столбцы.AddRange({новый объект datacolumn(перевод строки(0)), новый datacolumn(строки(1)), Новый datacolumn(строки(2)), Новый datacolumn(перевод строки(3)),
Новый datacolumn(перевод строки(4)), Новый datacolumn(перевод строки(5)), Новый datacolumn(перевод строки(6)), Новый datacolumn(перевод строки(7)), Новый datacolumn(перевод строки(8)),
Новый datacolumn(новая строка(9)), новый datacolumn(перевод строки(10)), Новый datacolumn(перевод строки(11))})
В то время как (не СР.EndOfStream)
строки = СР.С readline.Split (", " c)
Dim newrow As DataRow = dt. NewRow
невров.ItemArray = {перевод строки(0), перевод строки(1), строки(2), строки(3), строки(4), строки(5), перевод строки(6), перевод строки(7), перевод строки(8), перевод строки(9), перевод строки(10), перевод строки(11)}
'построить массив данных сайта
Помощью siteview(dtrow) = перевод строки(0) : имя_сайта(dtrow) = перевод строки(1) : оборудование(dtrow) = перевод строки(2) : IP-адрес(dtrow) = перевод строки(3) : порт(dtrow) = перевод строки(4)
Имя пользователя (dtrow) = новая строка(5): пароль (dtrow) = новая строка(6): PBxPos (dtrow) = новая строка(7) : PByPos (dtrow) = новая строка(8) : PBPic (dtrow) = новая строка (9)
TBxPos (dtrow) = newline(10): TByPos (dtrow) = newline(11)
dt. Rows. Add (newrow) : dtrow = dtrow + 1
Конец Пока
Конец Подводной Лодки
и в формах формируют код.......
Частная суб Form1_Shown(отправителя как объект, а равно EventArgs) обрабатывает меня.Показано
DataGridView1. DataSource = Данные
Конец Подводной Лодки
ошибки........
Описание Кода Серьезности Состояние Подавления Строки Файла Проекта
Ошибка BC30112 "System. Data" является пространством имен и не может использоваться в качестве выражения. Получить C:\VBnet\Form1.vb 459 Активных
Описание Кода Серьезности Состояние Подавления Строки Файла Проекта
Ошибка BC30112 "System. Data" является пространством имен и не может использоваться в качестве выражения. Получить C:\VBnet\UDP_Send_and_Receive_Using_Threads_in_VBNET_src\UDP отправка и получение с помощью потоков в VB. NET_src\UDP Receive\bin\NAMS. vb 68 Active
Описание Кода Серьезности Состояние Подавления Строки Файла Проекта
Ошибка BC30057 слишком много аргументов для ' Public Sub New ()'. Получить C:\VBnet\UDP_Send_and_Receive_Using_Threads_in_VBNET_src\UDP отправка и получение с помощью потоков в VB. NET_src\UDP Receive\bin\NAMS. vb 68 Active
comalco2000
Мне кажется, я упускаю из виду то, что вы мне сказали.
У меня есть только "данные" в двух местах....
DataGridView1. DataSource = Данные
Dim f1 как новая форма 1(Данные)
что и где находится 3-й??
(Вы уже можете сказать, что я новичок в .net, да? Я любил VB6)
OriginalGriff
Ответ обновлен.
comalco2000
спасибо ... но теперь у меня больше ошибок, чем я думаю, что смогу справиться как Новичок
Не знаю, как теперь двигаться вперед... со всеми изменениями на этом пути и количеством ошибок, которые сейчас появляются, я думаю,что мне нужно опубликовать весь мой код, чтобы вы заметили, что у меня сейчас не так...и это очень много строк кода!
comalco2000
мои мозги поджариваются. Я думаю, что мне лучше всего лечь на сено и переосмыслить все это завтра вечером, я очень ценю вашу помощь, но я думаю, что сейчас у меня все в порядке с головой :)
OriginalGriff
Наверное, хорошая идея!
comalco2000
Спасибо снова