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

いくつかの調査の後、私は見つけました:

データがグリッドにロードされた後にスキンを設定すると、スキンがスクロールバーに適用されます。問題は、同じスキンを再適用できないことです。それを行うには、切り替える必要があります。

良いがハックな解決策は、別のデータ ソースから 20 行のダフ データをグリッドに入力し、データが空で読み込まれたときにグリッドを再入力することです。

于 2013-02-02T09:24:15.057 に答える