Я пытаюсь загрузить форму вуправления не отображается при загрузке формы
Dim f as New Form2
f.show()
Форма становится загруженной, но он не показывает все элементы управления. У меня есть две кнопки и два текстовых поля. Обе кнопки и одно текстовое поле становятся прозрачными. Форма появляется так, пока не закончится текущая подпрограмма.
Кроме того, форма при загрузке должна отображать текст, полученный из базы данных, и отображать текст (возвращенный снова с равным интервалом от db), если пользователь явно не закрывает приложение. Эта логика также находится в событии Form2_Load.
Как написать логику, чтобы форма2 отображалась правильно и получает текст из db на регулярном интервале.
Я создаю словарь, как приложение для домена здравоохранения. Он работает в двух режимах. Одним из режимов является режим ленты, где создается форма (форма отмечена как самая верхняя), которая должна отображать термин и определение до тех пор, пока приложение остается в живых. Следовательно, вы видите бесконечный цикл. Когда пользователь нажимает кнопку закрытия или нажимает X, приложение закрывается.
Я играл с кодом и переносил его с загрузки даже на указанное событие. Однако проблема сохраняется.
Private Sub Form2_Shown(ByVal sender As Object, ByVal e As EventArgs) _
Handles MyBase.Shown
Dim myConnection As OleDbConnection = New OleDbConnection
Dim idSelected, queryGetWordDef, totalRows
Dim rowReturned, queryGetMaxID, provider, ipath, dataFile, connString As String
Dim dict() As String
Dim dr1 As OleDbDataReader
Dim dt As DataTable = New DataTable
provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
ipath = Application.StartupPath
dataFile = ipath & "\Database\database1.mdb" ' Change it to your Access Database location
connString = provider & dataFile
myConnection.ConnectionString = connString
queryGetMaxID = "SELECT ID FROM Table1"
myConnection.Open()
Dim cmd As OleDbCommand = New OleDbCommand(queryGetMaxID, myConnection)
Try
dr1 = cmd.ExecuteReader()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
dt.Load(dr1)
totalRows = dt.Rows.Count
While True
idSelected = dt.Rows.Item(CInt(totalRows * Rnd()) + 1)(0)
queryGetWordDef = "SELECT Word & ""@"" & Meaning FROM Table1 WHERE ID = " & CStr(idSelected)
cmd = New OleDbCommand(queryGetWordDef, myConnection)
Try
rowReturned = cmd.ExecuteScalar()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
dict = rowReturned.Split("@")
Me.txtBoxDefinition.Text = dict(1)
Me.txtBoxTerm.Text = dict(0)
Thread.Sleep(5000)
End While
End Sub
Изображение формы прилагается для большей ясности.
Возможно ли для вас показать код для формы 2? – Karlta05
Элементы управления там, они просто не окрашены. Ваш поток пользовательского интерфейса делает что-то еще, чего он не должен делать. Как запрос к базе данных или попытка обработки массивной бури запросов на вызовы. Такая ошибка, которая требует просмотра кода, а не скриншота. –
@HansPassant, я обновил код в своем исходном сообщении. Пожалуйста, дайте мне знать, если что-то еще понадобится с моей стороны. –