(インフラジスティックス 2008 Vol. 3、CLR 2.0)
InfragisticsUltraGrid
には、列チューザー ユーザー コントロールが付属しています。これは、列の非表示状態を切り替えるチェックボックスを備えた列の単純な垂直配置です。さらに、列を選択してグリッドに直接ドラッグできるため、後で手動で配置する必要がありません。(これは、既に多くの表示されている列があり、新しい列がどこにあるのか見当がつかない場合に特に便利です。)
に基づいて独自の列チューザーを構築していますUltraTree
。チェックボックスを同じように動作させることは問題ではありませんでしたが、列をツリーからグリッドにドラッグして受け入れさせる方法が見つかりませんでした。
私のツリーでは、それぞれUltraTreeNode
にTag
次の がありますstruct
。
Private Structure DraggableGridColumn
Public NodeKey As String
Public NodeName As String
Public ParentKey As String
Public Column As UltraGridColumn
End Structure
次に、次のようなイベントがあります。
Private Sub columnsTree_SelectionDragStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles columnsTree.SelectionDragStart
If columnsTree.SelectedNodes.Count <> 1 Then
Return
End If
If Not TypeOf columnsTree.SelectedNodes(0).Tag Is DraggableGridColumn Then
Return
End If
Dim column As UltraGridColumn = CType(columnsTree.SelectedNodes(0).Tag, DraggableGridColumn).Column
columnsTree.DoDragDrop(column, DragDropEffects.All)
End Sub
DoDragDrop
呼び出しでは、(column
タイプUltraGridColumn
) もcolumn.Header
(タイプ ) もColumnHeader
グリッドに受け入れられません。間違ったタイプを送信している、および/またはグリッドstruct
がいくつかの追加情報を含む特別なものを期待していると思います。残念ながら、Infragistics の通常の列チューザーがこれを適切に行うイベント (列チューザー側とグリッド側の両方) をキャッチできませんでした。通常のドラッグ アンド ドロップ イベントは発生しないようです。