将文件放入DataGridView时的幻像行

时间:2014-05-25 00:33:21

标签: vb.net winforms datagridview drag-and-drop

我想将文件拖放到DataGridView中。 我有一个包含以下代码的表单。 当我单击Button1时,两个计数都返回Zero。 当我在DataGridView上拖动文件时dt.Rows.Count返回零,而dt.DefaultView.Count返回One。这是为什么? 我的印象是,当我第一次点击按钮时,拖动文件然后两个计数然后返回零。在进行拖动时,是否必须以特殊方式初始化DataGridView或数据表?

Public Class Form1
Private WithEvents bs As New BindingSource
Private WithEvents dt As New DataTable

Public Sub New()
    ' Dieser Aufruf ist für den Designer erforderlich.
    InitializeComponent()
    ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
    Dim col As DataColumn = New DataColumn("col1", GetType(String))
    dt.Columns.Add(col)
    dt.PrimaryKey = New DataColumn() {dt.Columns(0)}
    bs.DataSource = dt
    DataGridView1.AutoGenerateColumns = False
    DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.DataPropertyName = "col1", .Name = "col1", .HeaderText = "col1", .ReadOnly = True})
    DataGridView1.DataSource = bs
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Debug.Print(dt.Rows.Count)
    Debug.Print(dt.DefaultView.Count)
End Sub

Private Sub DataGridView1_DragEnter(sender As Object, e As DragEventArgs) Handles DataGridView1.DragEnter
    Debug.Print(dt.Rows.Count)
    Debug.Print(dt.DefaultView.Count)
End Sub
End Class

增加: 正如评论家所说:我不想知道Drop是如何工作的,我需要设置effect并且我需要Drop-Code。 当我打电话给DataGridView.Datasource.DefaultView.ToTable()时,我偶然发现了这一点。 我刚发布了这个最小的样本,显示我是否在随机时间点(按钮单击)或在Drag'n'Drop操作期间是否计数存在差异。 为什么呢?

我深入研究了这一点。在DragEnter处理程序dt.DefaultView.addNewRow中设置为一个对象。我打电话给dt.AcceptChanges(),幻影行消失了。首先是为什么/由谁创建/何时创建的?

dragEnter处理程序中存在

dt.DefaultView.Item(0).Row,并且包含一个带有DBNULL.value的列

0 个答案:

没有答案