Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在visual basic中按按钮_Vb.net_Button_Streamwriter - Fatal编程技术网

Vb.net 在visual basic中按按钮

Vb.net 在visual basic中按按钮,vb.net,button,streamwriter,Vb.net,Button,Streamwriter,我是Visual Basic.NET新手,我只是在玩它。我有一本书,它告诉我如何读取文件,而不是如何通过点击按钮写入文件。我只有一个按钮和一个名为fullNameBox的文本框。当我点击按钮时,它会给我一个未处理的异常错误。这是我的密码: Public Class Form1 Sub outputFile() Dim oWrite As System.IO.StreamWriter oWrite = System.IO.File.CreateText("C

我是Visual Basic.NET新手,我只是在玩它。我有一本书,它告诉我如何读取文件,而不是如何通过点击按钮写入文件。我只有一个按钮和一个名为fullNameBox的文本框。当我点击按钮时,它会给我一个未处理的异常错误。这是我的密码:

Public Class Form1
    Sub outputFile()
        Dim oWrite As System.IO.StreamWriter
        oWrite = System.IO.File.CreateText("C:\sample.txt")
        oWrite.WriteLine(fullNameBox.Text)
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        outputFile()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class

您是否尝试过单步检查应用程序以查看错误所在?快速浏览一下,您可能需要在第四行使用System.IO.File(oWrite=IO.File…)而不仅仅是IO,但我还没有尝试运行它。

Imports System.IO
Imports System.IO
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SaveFileDialog1.FileName = ""
        SaveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        SaveFileDialog1.ShowDialog()
        If SaveFileDialog1.FileName.Trim.Length <> 0 Then
            Dim fs As New FileStream(SaveFileDialog1.FileName.Trim, FileMode.Create)
            Dim sr As New StreamWriter(fs)
            sr.Write(TextBox1.Text)
            fs.Flush()
            sr.Close()
            fs.Close()
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        OpenFileDialog1.FileName = ""
        OpenFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        OpenFileDialog1.ShowDialog()
        If OpenFileDialog1.FileName.Trim.Length <> 0 Then
            Dim fs As New FileStream(OpenFileDialog1.FileName.Trim, FileMode.Open)
            Dim sw As New StreamReader(fs)
            TextBox1.Text = sw.ReadToEnd
            fs.Flush()
            sw.Close()
            fs.Close()

        End If
    End Sub
End Class
公开课表格1 私有子按钮1\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮1。单击 SaveFileDialog1.FileName=“” SaveFileDialog1.Filter=“txt文件(*.txt)|*.txt |所有文件(*.*)|*.” SaveFileDialog1.ShowDialog() 如果SaveFileDialog1.FileName.Trim.Length为0,则 将fs设置为新文件流(SaveFileDialog1.FileName.Trim,FileMode.Create) Dim sr作为新StreamWriter(fs) 高级写入(TextBox1.Text) 财政司司长 高级关闭() 财政司司长(关闭) 如果结束 端接头 私有子按钮2\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理按钮2。单击 OpenFileDialog1.FileName=“” OpenFileDialog1.Filter=“txt文件(*.txt)|*.txt |所有文件(*.*)|*” OpenFileDialog1.ShowDialog() 如果OpenFileDialog1.FileName.Trim.Length为0,则 将fs设置为新文件流(OpenFileDialog1.FileName.Trim,FileMode.Open) 作为新StreamReader(fs)的Dim sw TextBox1.Text=sw.ReadToEnd 财政司司长 sw.Close() 财政司司长(关闭) 如果结束 端接头 末级
这是一个完整的功能程序,如果需要,只需拖放文本框、openfiledialog和savefiledialog。 请随意使用代码。 享受

顺便说一句,代码中的问题是,当您使用完filestream后,“必须”关闭它,这样做将释放任何资源,如套接字和文件句柄。

net framework是一个非常强大的框架。同样地,对于简单的任务,它也有简单方便的方法。大多数人倾向于把事情复杂化以展示知识。但更少的代码=更少的处理=更快、更高效的应用程序(有时),因此上述大型方法可能不适用。除此之外,上述方法最好写为sub,或者如果返回某个内容,则写为函数

My.Computer.FileSystem.WriteAllText("File As String", "TextAsString", Append as Boolean)
一般的例子是

My.Computer.FileSystem.WriteAllText("C:\text.text", "this is what I would like to add", False)
My.Computer.FileSystem.WriteAllText("C:\text.text", fullNameBox.text, True)
Private Sub WriteText()
        Dim objWriter As New System.IO.StreamWriter("file.txt", False)
        objWriter.WriteLine(fullnamebox.Text)
        objWriter.Close()
    End Sub
这是我想补充的

也可以更改为字段的当前文本

因此,一个更具体的例子是

My.Computer.FileSystem.WriteAllText("C:\text.text", "this is what I would like to add", False)
My.Computer.FileSystem.WriteAllText("C:\text.text", fullNameBox.text, True)
Private Sub WriteText()
        Dim objWriter As New System.IO.StreamWriter("file.txt", False)
        objWriter.WriteLine(fullnamebox.Text)
        objWriter.Close()
    End Sub
如果您想了解代码的附加部分

  • 通过设置append=true,您允许应用程序在文件末尾写入文本,而文件中的其余文本保持不变

  • 通过设置append=false,您将删除现有文件中的所有文本,并用新文本替换这些文本

如果您不想编写代码的这一部分(尽管它很小),您可以创建一个sub来处理它,但是该方法会略有不同,只是出于礼节。功能将保持相似。(使用StreamWriter)

特定的示例如下

My.Computer.FileSystem.WriteAllText("C:\text.text", "this is what I would like to add", False)
My.Computer.FileSystem.WriteAllText("C:\text.text", fullNameBox.text, True)
Private Sub WriteText()
        Dim objWriter As New System.IO.StreamWriter("file.txt", False)
        objWriter.WriteLine(fullnamebox.Text)
        objWriter.Close()
    End Sub
然后在按钮下单击事件调用:

writetext()
您也可以进一步执行此操作。如果您想创建一个更高级的子对象来处理任何文本框和文件

假设您计划为每个文件创建多个单独的文件和多个字段(尽管有一种更干净、更优雅的方法),您可以创建一个函数。{对于本例,我将尽可能详细地解释函数背后的概念}

下面是针对您上述请求的更高级的子演示

它的作用是允许我们(以同样的形式——如果您需要它,我们可以在另一个时间讨论,它并不复杂)调用函数并根据需要输入信息

子使用->一般样本

WriteText(Filename As String, app As Boolean)
WriteText("C:\text.txt, False, fullnamebox.text)
WriteText("C:\text2.txt, False, halfnamebox.text)
子使用->特定样本

WriteText(Filename As String, app As Boolean)
WriteText("C:\text.txt, False, fullnamebox.text)
WriteText("C:\text2.txt, False, halfnamebox.text)
但是这个方法最好的地方是你可以根据需要改变它。 假设您有两个按钮*和**两个框,第一个按钮的按钮事件触发上述代码,第二个按钮触发不同的代码

示例

WriteText(Filename As String, app As Boolean)
WriteText("C:\text.txt, False, fullnamebox.text)
WriteText("C:\text2.txt, False, halfnamebox.text)
关于创建自己的函数和子函数,最好的部分是Control,我不想讨论它,因为它会脱离主题,但是在编写文件之前,您可以先检查文本框是否包含文本。这将保护文件的完整性

希望这有帮助!
理查德·斯泰斯

例外情况是什么?它是在点击的第一个实例中发生的吗?好吧,我发现它正在创建文件,只是没有向它写入任何内容,就像我说的,跟踪它最简单的方法是通过它。fullNameBox实际上是有效的文本框吗?你有没有试过在没有全名框的情况下只向其写入文本?一步一步地检查你的变量。在测试了一些不同的东西之后,我让所有的东西都工作起来了。我必须改变我输出到文件的方式我改变了它,但它仍然不起作用。在我单击按钮之前,程序不会给我任何错误,然后它会给我未处理的异常错误您是否尝试在函数中放置断点,然后单步执行以查看是哪一行导致了问题?“未处理的异常”不是一个非常有用的错误,它只是意味着发生了一些您没有解释的错误。逐步浏览它会给你更多的信息。