So habe ich eine Windows Form-Anwendung, die einige seltsame Probleme hat.Problem mit der Zeichnung von Steuerelementen als Teil des Load/Shown-Ereignisses
Ich bemerke, dass wenn einige Formulare angezeigt werden, sie weiße Felder zeigen, wo alle Steuerelemente anstelle des Textes sind.
Hier sind einige images des Problems.
Ich hatte ursprünglich alles im Load-Event und wechselte zum angezeigten Event. Es hatte immer noch ein Problem, also habe ich den eigentlichen Arbeitsteil in eine andere Methode verschoben und einen Delegaten hinzugefügt, um neue Dateien in das checkedlistbox-Steuerelement zu schreiben, falls das das Problem war.
Leider passiert es immer noch und ich bin verwirrt. Hier
ist der Code Ich verwende:
Private Sub form_FileCleanup_Shown(sender As Object, e As EventArgs) Handles Me.Shown
frmMain.Hide()
Me.BringToFront()
DoWork()
End Sub
Private Sub DoWork()
For Each _file As KeyValuePair(Of String, FileInfoList.fileInfoS) In fl.FileRemoveList
Dim fi As FileInfoList.fileInfoS = _file.Value
UpdateFileListl(fi.FullName)
'cbxFileList.Items.Add(fi.FullName, False)
Next
lblStatusMessage.Text = ""
End Sub
Private Delegate Sub FileListUpdateDelegate(fileName As String)
Private Sub UpdateFileListl(fileName As String)
Try
If Me.cbxFileList.InvokeRequired Then
cbxFileList.Invoke(New FileListUpdateDelegate(AddressOf UpdateFileListl), fileName)
Else
cbxFileList.Items.Add(fileName, False)
cbxFileList.Update()
End If
Catch ex As Exception
errorLogs.Add(ex)
End Try
End Sub
Laden Sie das Bild im Stapelüberlauf hoch. –
Sieht so aus, als wäre es damit beschäftigt, etwas anderes zu tun und hat keine Zeit, um die Steuerelemente zu malen. – Plutonix
Wahrscheinlich ist Ihr 'DoWork' zeitverschwendend und macht die UI-Lauffläche beschäftigt. Verwenden Sie [Async/Await] (https://msdn.microsoft.com/en-us/library/mt674902.aspx) oder verwenden Sie [BackgroundWorker] (https://msdn.microsoft.com/en-us/library/cc221403 (v = vs.95) .aspx? cs-save-lang = 1 und cs-lang = vb # code-snippet-1). –