0

我有一个奇怪的问题,如果我使用 RunWorkerAsync 填充我的 XtraGrid.GridControl,当前选定的皮肤不会将自身应用于网格滚动条 [在程序加载时]。

如果我不异步填充网格,则主题将应用于滚动条。

更多关于我的代码:

我使用 Outlook 互操作来收集电子邮件列表并填充它们以模拟电子邮件收件箱。我需要它来异步运行,否则程序会咆哮起来。

我在用:

Private WithEvents m_backgroundWorkerInbox As New BackgroundWorker  

Public Sub New()
    InitializeComponent()
    ' some general settings code + connection to outlook
    m_backgroundWorkerInbox.RunWorkerAsync()

end sub

Private Sub m_backgroundWorkerInbox_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles m_backgroundWorkerInbox.DoWork
    ' do some work
End Sub

Private Sub m_backgroundWorkerInbox_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles m_backgroundWorkerInbox.RunWorkerCompleted
    ' do some work

End Sub

如果我绕过异步并从异步工作人员中复制代码并将其放在New()滚动条中,则在第一次程序加载时收集正确的主题。

有人遇到过这种情况么?

4

1 回答 1

0

经过一番调查,我发现:

如果在数据加载到网格后设置皮肤,它会将皮肤应用到滚动条。问题是你不能重新应用相同的皮肤,你需要换掉它。

一个好的但 hacky 的解决方案可能是使用来自不同数据源的 20 行 duff 数据填充网格,然后当 tbe 数据加载为空并重新填充网格时。

于 2013-02-02T09:24:15.057 回答