【发布时间】:2019-09-16 18:38:52
【问题描述】:
抱歉,如果这已经被问到了。如果是这样,我无法找到一个简单的解决方案。我试图允许用户在 DataGridView 中复制/粘贴多条记录(数据的内存副本,稍后在用户单击保存按钮时保存)并且找不到任何有效的东西。这可能是因为我对这一切有些不理解。
我使用 Visual Studio 的拖动/表格设置了一个标准的编辑表单,因此它使用 BindingSource 控件和所有其他控件。当手动在新行中逐个输入内容时它工作得很好,因此它似乎设置正确,但是当使用代码添加记录(或多个记录)时,似乎没有任何工作。
我在下面的代码中尝试了一些内容。有人可以请至少引导我朝着正确的方向前进吗?粘贴多条记录并没有那么难。
我在用户按下 Control-V 时运行此命令(剪贴板正确保存分隔字符串):
Private Sub PasteClipboard()
If Clipboard.ContainsText Then
Dim sLines() As String = Clipboard.GetText.Split(vbCrLf)
For Each sLine As String In sLines
Dim Items() As String = sLine.Split(vbTab)
Dim drv As DataRowView = AdjustmentsBindingSource.AddNew()
drv.Item(1) = Items(0)
drv.Item(2) = Items(1)
drv.Item(3) = Items(2)
drv.Item(4) = Items(3)
'Error on next line : Cannot add external objects to this list.
AdjustmentsBindingSource.Add(drv)
Next
End If
End Sub
编辑
(绑定源绑定到数据适配器,数据适配器绑定到 mdb 文件中的表,如果这有助于理解)
我将代码的内部部分调整为:
If (RowHasData(Items)) Then
Dim drv As DataRowView = AdjustmentsBindingSource.AddNew()
drv.Item("FontName") = Items(0)
drv.Item("FontSize") = Items(1)
drv.Item("LetterCombo") = Items(2)
drv.Item("Adjustment") = Items(3)
drv.Item("HorV") = Items(4)
End If
它有点工作,但它还在 2 个新行之前添加了一个空白行。不知道这是从哪里来的,因为我什至包括了你的 RowHasData() 例程......
【问题讨论】:
-
你需要解释当你执行你的代码时实际发生了什么。
-
谢谢。我更新了它,试图让它更清楚。信息够不够?
标签: vb.net datagridview bindingsource