您好我对视觉工作室还不熟悉,我在为我的程序添加保存功能时遇到了一些麻烦。基本上我的程序所做的是为用户设置事件提醒(它就像每日计划者但没有通知)。我有“添加事件”,“删除”和“更新按钮来处理程序,现在我剩下的就是”保存“和”加载“键。我想要做的是找到一种方法来保存DataGridView,以便以后使用“load”键在程序中打开它。如果更容易删除“加载”并将信息保存到事件提醒应用程序中,我可以走那条路线,但我不知道如何做到这一点。这就是我现在对主窗体中的代码所拥有的:
Public Class MainForm1
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
If DataGridView1.Columns(e.ColumnIndex).Name = "Delete" AndAlso Me.DataGridView1.Rows(e.RowIndex).IsNewRow = False Then
Me.DataGridView1.EndEdit()
Me.DataGridView1.Rows.RemoveAt(e.RowIndex)
End If
If DataGridView1.Columns(e.ColumnIndex).Name = "Column4" AndAlso Me.DataGridView1.Rows(e.RowIndex).IsNewRow = False Then
Dim Update As UpdateWindow
Update = UpdateWindow
Update.Show()
End If
End Sub
Private Sub dltBtn_Click(sender As Object, e As EventArgs)
Dim dltBtn As dltWindow
dltBtn = dltWindow
dltBtn.Show()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Button1 As addBtn
Button1 = addBtn
Button1.Show()
End Sub
Private Sub UptBtn_Click(sender As Object, e As EventArgs)
Dim UptBtn As UpdateWindow
UptBtn = UpdateWindow
UptBtn.Show()
End Sub
Dim thisFilename As String = Application.StartupPath & "\Event reminder.dat"
Private Sub saveBtn_Click(sender As Object, e As EventArgs) Handles saveBtn.Click
Me.Validate()
Me.SaveGridData(DataGridView1, thisFilename)
End Sub
Private Sub BtnLoad_Click(sender As Object, e As EventArgs) Handles BtnLoad.Click
Me.LoadGridData(DataGridView1, thisFilename)
End Sub
Private Sub SaveGridData(ByRef ThisGrid As DataGridView, ByVal thisFilename As String)
ThisGrid.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText
ThisGrid.SelectAll()
IO.File.WriteAllText(thisFilename, ThisGrid.GetClipboardContent().GetText.TrimEnd)
ThisGrid.ClearSelection()
End Sub
Private Sub LoadGridData(ByRef ThisGrid As DataGridView, ByVal Filename As String)
ThisGrid.Rows.Clear()
For Each THisLine In My.Computer.FileSystem.ReadAllText(Filename).Split(Environment.NewLine)
ThisGrid.Rows.Add(Split(THisLine, " "))
Next
End Sub
结束班
我已经离开了其他论坛并询问了如何执行此操作,并且他们都说将datagridview绑定到数据表。如果这是我必须走的路线,我该怎么办呢?如果有人有一些我可以尝试的例子或代码,我会非常感激。
答案 0 :(得分:0)
我在发布的代码中看到的问题是在LoadGridData
和SaveGridData
方法之间。当LoadGridData
方法运行时,它会读取一个文件,其中每行在空格“”上“拆分”。这很好,如果文件正确地“空格”分隔,它按预期工作。因此,让我们假设一切正常,数据在网格中正确显示。
然后用户按下调用saveBtn
方法的SaveGridData
。代码似乎“选择”DataGridView
中的所有单元格到剪贴板,然后继续将剪贴板文本写入加载网格时使用的SAME文件名。这也似乎按预期工作。
这个问题是当代码将DataGridView
的所有单元格复制到剪贴板时,写下这个复制的剪贴板文本;它将使用“Tab”分隔符。使用“空格”分隔符读入的文件Event reminder.dat
将被“制表符”分隔符覆盖,而不是“空格”分隔符。因此,下次运行load方法时......它将失败。
如果加载和保存按钮要读取同一个文件,那么它们必须同意将哪个字符用作分隔符。您可以使用任何想要的字符作为分隔符。您可以使用“空格”作为已发布的代码,但是这会将每种类型限制为不带空格的字符串。如果其中一个字段是家庭地址,则机会很好,字符串中会有一个空格。使用“空格”作为分隔符不一定是最好的选择。
当前代码提供了一个简单的解决方案。目前,如果文件Events reminder.dat
是空格分隔的并且正确读入数据网格视图,那么应该很容易用其他东西替换空格分隔符。在这种情况下,由于SaveGridData
方法使用“制表符”分隔字段,因此我们只需要在读取文件时将“加载”方法更改为“分页”而不是“空格”。 / p>
第1步 - 制作Events reminder.dat
步骤2 - 运行程序,按下加载按钮,确保所有数据都正确加载到网格中。
步骤3 - 如果数据在网格中正确显示,请按保存按钮。 (使用制表符分隔符更新文件)
步骤4 - 退出程序并在LoadGridData
方法中进行以下更改。
ThisGrid.Rows.Add(Split(THisLine, vbTab))
第5步 - 运行程序。现在加载和写入方法都同意使用什么字符(Tab)作为分隔符。
最后,要评论使用DataTable
答案是肯定的。 DatagridView
和DataTable
很好地融合在一起。希望这会有所帮助。
您可能需要使用“Tour” Stackoverflow来查看它是如何工作的。