【问题标题】:Issue with drawing of controls as part of Load/Shown event作为加载/显示事件的一部分的控件绘制问题
【发布时间】:2016-08-04 15:12:54
【问题描述】:

所以我的 Windows 窗体应用程序出现了一些奇怪的问题。

我注意到,当显示某些表单时,它们会显示所有控件而不是文本的白框。

这里有一些images 的问题。

我最初拥有 Load 事件中的所有内容,然后移至显示的事件。它仍然有问题,所以我将实际工作部分移到了不同​​的方法中,并添加了一个委托来将新文件写入 checklistbox 控件,以防出现问题。

不幸的是,它仍然会发生,我很困惑。

这是我正在使用的代码:

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

【问题讨论】:

  • 在stackoverflow中上传图片。
  • 好像正忙着做其他事情,没时间画控件
  • 可能你的DoWork 很费时间并且让 UI 变得忙碌。使用Async/Await 或使用BackgroundWorker。
  • 我同意,但不应该发生其他任何事情,我已将所有内容移出 Load and Shown 事件。我刚刚注释掉了 DoWork,它仍然会发生。
  • 好吧,你们让我开始思考,然后我回到主窗体,我明白了问题所在。它试图同时删除空文件夹。我评论了这一点,现在没有白框了。感谢您的想法:)

标签: .net vb.net winforms drawing controls


【解决方案1】:

在主窗体中,它正在运行 CPU 密集型任务。出于某种原因,我认为它本质上是连续的,但新形式与导致问题的旧形式同时工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多