在visual basic中按一个按钮

时间:2010-08-10 05:01:39

标签: 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:\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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

如果你愿意,这是一个完整的功能程序,你只需要拖放一个文本框,openfiledialog和一个savefiledialog。 随意玩代码。 享受
顺便说一下,你的代码中的问题是当你完成使用它时你“必须”关闭文件流,这样做会释放任何资源,如套接字和文件句柄。

答案 2 :(得分:0)

.net框架是一个非常强大的框架。以同样的方式(然而)它为简单的任务提供了简单方便的方法。大多数人倾向于使事情复杂化以显示知识。但是更少的代码=更少的处理=更快和更有效的应用(有时),因此大的上述方法可能不合适。除此之外,上面提到的方法最好是作为子函数写入,或者如果返回某个函数则更好。

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)

如果您想了解代码的追加部分

  • 通过设置append = true,您允许应用程序在文件末尾写入文本,保留文件中已有的其余文本。

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

如果你不想编写代码的那一部分(虽然它很小),你可以创建一个子来处理它,但是这种方法会略有不同,只是为了礼仪。功能将保持相似。 (使用 StreamWriter

Private Sub WriteText()
        Dim objWriter As New System.IO.StreamWriter("file.txt", append as boolean)
        objWriter.WriteLine(textboxname.Text)
        objWriter.Close()
    End Sub

具体示例

Private Sub WriteText()
        Dim objWriter As New System.IO.StreamWriter("file.txt", False)
        objWriter.WriteLine(fullnamebox.Text)
        objWriter.Close()
    End Sub

然后在button_click事件调用下:

writetext()

您也可以将此步骤进一步。如果您想创建一个更高级的Sub来处理任何文本框和文件。

让我们假设您计划为每个文件分配多个单独的文件和多个字段(尽管有一个 MUCH 更清洁更优雅的方法),您可以创建一个函数。 {我将尽可能详尽地解释该函数背后的概念}

下面的

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

Private Sub WriteText(Filename As String, app As Boolean, text As String)
        Dim objWriter As New System.IO.StreamWriter(Filename, app)
        objWriter.WriteLine(text)
        objWriter.Close()

End Sub

这样做可以让我们(在同一个表格上 - 如果你需要全局我们可以再讨论那个,它并不复杂得多)调用函数并根据需要输入信息。 / em>的

子使用 - &gt;一般样本

WriteText(Filename As String, app As Boolean)

子使用 - &gt;具体样本

WriteText("C:\text.txt, False, fullnamebox.text)

但是关于这种方法最好的部分是你可以根据需要改变它。 假设您有两个按钮*和**两个框,您可以让第一个按钮的button_event触发上面的代码,第二个按钮触发不同的代码。

示例

WriteText("C:\text2.txt, False, halfnamebox.text)

关于创建自己的函数和子函数的最好的部分是控制我不会进入它,因为它将不在主题,但您可以检查以确保文本框之前有文本写文件。这将保护文件的完整性。

希望这有帮助! Richard Sites。