【发布时间】:2020-08-24 12:31:58
【问题描述】:
我的意图是允许用户拖放列。
在表单 1 中,有按钮,当相应的按钮被计时,表单 2 会打开数据网格视图。 使用鼠标将第 1 列与第 2 列交换。 现在,当您关闭表单 2 并单击表单 1 上的按钮时,表单 2 应该会出现更改后的列。
我尝试了什么?
- 我试图按列顺序保存被移动列的列索引和与之交换的列的索引。
- 我不确定在单击按钮后如何将更改的列详细信息从子表单传输到父表单,然后再将父表单传输到子表单。
Public Class Form2
Public ctlDataGridDirect As System.Windows.Forms.DataGridView
Public columnOrder As New List(Of ColumnOrderItem)
Public ColumnChanged As Boolean = False
Public NotInheritable Class ColumnOrderItem
Public Property DisplayIndex As Integer
Public Property ColumnIndex As Integer
End Class
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ctlDataGridDirect = Me.ctlDataGrid
ctlDataGridDirect.ClipboardCopyMode = Windows.Forms.DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText
With ctlDataGrid
.AllowUserToAddRows = False
.RowHeadersVisible = False
End With
ctlDataGrid.Rows.Add()
ctlDataGrid.Rows(0).Cells("Column1").Value = Trim(0)
ctlDataGrid.Rows(0).Cells("Column2").Value = Trim(1)
ctlDataGrid.Rows(0).Cells("Column3").Value = Trim(2)
ctlDataGrid.Rows(0).Cells("Column4").Value = Trim(3)
If ColumnChanged = True Then
For i = 0 To columnOrder.Count - 1
Next
End If
End Sub
Private Sub ctlDataGrid_ColumnDisplayIndexChanged(sender As Object, e As DataGridViewColumnEventArgs) Handles ctlDataGrid.ColumnDisplayIndexChanged
ColumnChanged = True
End Sub
Private Sub SaveColumnOrder(Datagridview As DataGridView)
Dim columns As DataGridViewColumnCollection = ctlDataGrid.Columns
For i = 0 To columns.Count - 1
columnOrder.Add(New ColumnOrderItem With {.ColumnIndex = i, .DisplayIndex = columns(i).DisplayIndex})
Next
End Sub
Private Sub Form2_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
SaveColumnOrder(ctlDataGrid)
End Sub
End Class
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form2.Show()
End Sub
End Class
【问题讨论】:
标签: vb.net datagridview