VB.NET问题!200分

来自:品评    更新日期:早些时候
200分求个ASP.NET的留言板(VB的)~

http://so.xunlei.com/search?search=ASP.NET%E7%95%99%E8%A8%80%E6%9D%BF&restype=-1&sortby=7&suffix=&lrc=false&page=1&id=2

这里下吧

您好,在Visual Basic.NET中,是没有像这样的文件I/O操作的,一般都是通过System.IO.StreamReader和System.IO.StreamWriter类,System.IO.BinaryReader和System.IO.BinaryWriter类来读写文件以及利用My.Computer.FileSystem类读写文件,利用System.IO.Filestream类来创建文件,通过引用Microsoft Scripting Runtime来执行文件(夹)和驱动器的特殊操作,常用的是System.IO.StreamReader和System.IO.StreamWriter类。

例如说要读取一个文件,我们可以利用System.IO.StreamReader类编写一个方法(也就是函数),但是首先要在当前类的开头添加一个引用,引用名称:System.IO,添加引用的代码如下
Imports System.IO
添加引用之后,就在当前类的内部创建方法:
Private Function ReadFile(ByVal FileURL As String) As String
Dim sr As StreamReader = New StreamReader(FileURL)
ReadFile = sr.ReadToEnd()
sr.Close()
sr = Nothing
End Function
示例说明:
该方法是一个返回String(字符串)数据的函数,FileURL作为参数是用来存放需要访问的文件的URL,当然,要获取一个文件的URL,就是利用这一句代码实现的:
Dim sr As StreamReader = New StreamReader(FileURL)
当获取了URL之后,就要对文件进行读取操作了,然后将读取的结果返回给方法:
ReadFile = sr.ReadToEnd()
读取文件完毕之后,要对文件执行关闭操作:
sr.Close()
当然别忘了清理资源:
sr = Nothing
StreamReader类可以从流或文件中读取字符,在创建StreamREader类的对象时,可以指定一个流对象,也可以指定一个文件URL,创建对象后就可以调用他的方法,从流中读取数据,其常用方法如下:
Peek:返回下一个可用字符,但不使用它。
Read:读取输入流中下一个字符或一组字符并移动流或文件指针。
ReadBlock:从当前流中读取最大数量字符并从index开始将数据写入buffer。
ReadLine:从当前流中读取一行字符并将字符作为String返回。
REadToEnd:从流的当前位置到末尾读取流。
Close:关闭打开的对象,释放资源。
注:流,一种新的数据格式,这种格式可通过System.IO命名空间下的类访问。流用Stream类表示,所有的流都是从这个类中继承的。流向用户提供了一个一般的数据视图,隐藏了操作系统和底层设备的实现细节,所有的流都支持读写操作。在打开文件时将返回对应的流对象,用户可以对流对象进行读写操作。

如果要对文件执行按行读取操作,这时就会用到枚举,这时候,代码就要更改一下了:
Private Function ReadFile(ByVal FileURL As String) As String
Dim sr As StreamReader = New StreamReader(FileURL)
For Each fLine As String In sr.ReadToEnd()
Line = sr.ReadLine()
ReadFile = ReadFile & fLine
Next sr.ReadLine
sr.Close()
End Function
示例说明:
For Each…Next:派生于For…Next循环,用于枚举一系列对象中的成员,而这些对象组成集合,如果集合中至少存在一个元素,程序就会静茹For Each块执行。其格式如下:
For Each 元素 [As 数据类型] In 元素集合
[循环体]
[Exit For]
[循环体]
Next [元素]
比如:
Dim CountNumber As ULong = 0
Dim FolderName() As String = New String() {" "}
For Each strFolder As String In My.Computer.FileSystem.GetDirectories("C:\")
CountNumber = CountNumber + 1
ReDim Preserve FolderName(1 To CountNumber)
FolderName = strFolder
Next strFolder
注:My.Computer.FileSystem.GetDirectories:主要用来枚举指定目录的子文件夹。
Preserve:主要用来避免重定义数组而不损失数组元素的原有数据。

另外,利用My.Computer.FileSystem也可以实现文件的读取,其代码如下:
Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:est.txt")
示例说明:
定义一个字符串变量利用My.Computer.FileSystem.ReadAllText来实现对“C:est.txt”的读取。
如果是已经编码的文本,则可以使用My.Computer.FileSystem对象中的ReadAllText方法并提供路径和文件编码类型,将文本写入字符串变量中,例如:
Dim fpReader As String = My.Computer.FileSystem.ReadAllText("C:est.txt", _
System.Text.Encoding.UTF32)
当然,System.Text.Encoding的成员不止一个,它还有如下成员:
System.Text.Encoding.UTF8
System.Text.Encoding.UTF16
System.Text.Encoding.ASCII
System.Text.Encoding.Unicode
这些是常见的成员,也是主要的成员。
另外,利用My.Computer.Filesystem类无法实现文件的行操作,还有,如果您的计算机未安装完整的Microsoft.NET Framework Runtime,则无法实现这种操作!

写入文件的操作同样简单,Visual Basic.NET 允许用户使用StreamWriter来对文件写入内容,下面就让我们来创建一个子例程,来实现文件的写入:
Private Sub WriterFile(ByVal FileURL As String, ByVal FileCon As String)
Dim sr As StreamWriter = New StreamWriter(FileURL)
sr.Write(FileCon)
sr.Close()
sr = Nothing
End Sub
示例说明:
sr.Write(FileCon):将FileCon写入文件FileURL之中。
另外,StreamWriter常用方法如下:
WriteLine:向流中写入一行,后面跟结束符。
Write:写入流,向流对象中写入字符并移动流或文件指针。
Close:关闭打开的对象,释放资源。

附:Visual Basic 6.0文件操作解说:
打开: Open 文件名 For Input | Output | Append As [#]文件号
Input打开读入,文件不存在报错。Output打开覆盖写入,文件不存在则创建。Append打 开追加写入,文件不存在则创建。
读: Line Input #文件号, 字符串变量
读一行数据存入字符串变量,数据包括空格、Tab、等,不包括回车符和换行符,所以要显示文件的换行效果,要手动添加回车符和换行符(vbCrLf)
Input #文件号, 变量1[, | ;] [变量2]...
这种方式可以存入多个变量,而且变量类型不限于字符串型。
写: Print #文件号, 参数1[, | ;] [参数2]...
将各参数逐个写入文件。参数间用逗号隔开时,文件中相应插入多个空格;用分号隔开时,插入一个空格。可以用Spc(n)、Tab(n)等进行排版。
Write #文件号, 参数1[, | ;] [参数2]...
这种写入方式将自动添加界定符,对不同参数的类型加以界定。
Visual Basic 6.0文件操作函数:
Seek: Seek(文件号)
返回文件正在访问的位置,返回值为长整型。对顺序文件和二进制文件,返回值以字节为单位;对随机访问文件,返回值以记录号为单位。
Seek: Seek [#]文件号,位置
定位文件到指定位置。位置单位同上所述。
Input: Input (字节数,[#]文件号)
从文件的访问当前位置读入指定字节数的数据。仅适用于顺序文件和二进制文件。
EOF: EOF(文件号)
判断文件的访问位置是否在文件尾,如果是,返回True,否则,返回False。
LOF: LOF(文件号)
返回文件长度,单位为字节。
FileLen: FileLen (文件名)
返回文件名对应文件的长度,单位是字节。该函数取磁盘文件标识中的长度,即文件打开前的长度,可以取未打开的文件长度。
GetAttr: GetAttr (Pathname)
返回指定文件或文件夹的属性。
FileAttr: FileAttr (文件号)
返回文件号对应文件的打开方式。
GetDateTime: GetDateTime (Pathname)
返回文件被创建或修改的最后日期和时间。
Free: FreeFile[(0|1)]
返回未被占用的文件号,Free或Free(0)返回1~255之间未占用的文件号,Free(1)返回256~511之间未占用的文件。
Dir: Dir (Pathname [,Attributes])
测试指定路径是否有某文件,Attributes附加文件属性条件,取值vbNormal、vbReadOnly、vbHidden、vbSystem、vbVolume、vbDirectory。
Kill: Kill (文件名)
删除指定文件,文件名可包含路径。
FileCopy: FileCopy 源文件,目标文件
拷贝文件。
Name: Name 旧文件名 As 新文件名
文件重命名。前后路径不一致时,操作为移动文件并重命名。
MkDir: MkDir path
新建文件夹。
RmDir: Rmdir path
删除文件夹。
ChDrive: ChDrive Drive
改变当前驱动器 ChDrive "D"
CurDir: CurDir [(driver)]
返回当前工作路径,指定driver则返回目标驱动器的当前工作路径。
举例:
'新建文件,并写入数据,关闭
Open "a.txt" For Output As #1
Print #1, "ABCDEFG"; vbCrLf; "HIJK"
Close #1
'打开文件,并全部写入新文件,关闭
Open "a.txt" For Input As #2
Open "b.txt" For Output As #3
Dim str As String
While (Not EOF(2))
Line Input #2, str
Print #3, str
Wend
Close
注:关于Visual Basic 6.0的文件操作资料来自于http://blog.csdn.net/ben1978/article/details/751498

如果您觉得我的回答帮助了您解决难题,别忘了采纳哦,如果我的回答未能解决您的问题,您可以在互联网上寻找更多的解决方案!

第一个问题:跳转到另一个窗体使用语句 Object.show,
你可以在form1任一控件事件下编写form2.show就行,如果还隐藏form1的话,再添加一句from1.hide
第二个问题
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
op1 = txt1.Text
op2 = txt2.Text
op3 = txt3.Text
op4 = txt4.Text
ba = txt3.Text
If op1 = "" Then
MsgBox("你已没有钱了,请重新开始", vbOKOnly + vbInformation, "游戏失败")
txt1.Text = 100

在这个位置添加一句代码
exit sub

不过我看你这段程序漏洞百出,我改正了一下,不过没明白你为什么用单选按钮去接收文本框的数据,所以就按照你的改了。改正后的代码如下:声明一下,你程序里的txt在我程序里是text,忘改了。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ba As String
op1.Text = Text1.Text
op2.Text = Text2.Text
op3.Text = Text3.Text
op4.Text = Text4.Text
ba = Text3.Text
If op1.Text = "" Then
MsgBox("你已没有钱了,请重新开始", vbOKOnly + vbInformation, "游戏失败")
Text1.Text = 100
Exit Sub

ElseIf op1.Text = 0 Then
MsgBox("你已没有钱了,请重新开始", vbOKOnly + vbInformation, "游戏失败")
Text1.Text = 100
End If
If op2.Text = "" Then
MsgBox("最少需要下注1", vbOKOnly + vbInformation, "输入错误")
ElseIf op2.Text = 0 Then
MsgBox("请输入下注金额", vbOKOnly + vbInformation, "输入错误")
End If
If Val(op1.Text) < Val(op2.Text) Then
MsgBox("你没有那么多钱了,请重新输入", vbOKOnly + vbInformation, " 你没那么多钱了")
End If
Dim bytcom As Byte
bytcom = Int(Rnd() * 3)
Select Case bytcom
Case 0
Text4.Text = -(Val(op2.Text) * Val(op3.Text))
Text1.Text = Val(op1.Text) - Val(op2.Text) * Val(op3.Text)
MsgBox("你出布,计算机出剪刀,你输了", vbOKOnly + vbInformation, "很遗憾")
Case 1
Text4.Text = Val(op2.Text) * Val(op3.Text)
Text1.Text = Val(op1.Text) + Val(op2.Text) * Val(op3.Text)
MsgBox("你出布,计算机出石头,你赢了", vbOKOnly + vbInformation, "恭喜")
Case 2
Text4.Text = 0
MsgBox("你出布,计算机出布,平手", vbOKOnly + vbInformation, "不要灰心")
End Select
If Text1.Text >= 1000000 Then
MsgBox("恭喜你通关了!重新开始", vbOKOnly + vbInformation, "游戏通关")
Text1.Text = 1000
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
End If

me.hide
form2.show

1.关闭form1
打开 form2.show
2.加个 IF THEN
通过就调用form1.show
实在不明白 密我 百度HI

第一个问题
dim frm as form2
frm.show()
第2个问题
在判断那加上一句 exit sub这样的话就是直接跳过下面的代码.如
If op1 = "" Then
MsgBox("你已没有钱了,请重新开始", vbOKOnly + vbInformation, "游戏失败")
exit sub
txt1.Text = 100

你还可以用
goto来自由跳转
If op1 = "" Then
MsgBox("你已没有钱了,请重新开始", vbOKOnly + vbInformation, "游戏失败")
goto end
txt1.Text = 100
你就可以把"end:"放在随便一个地方,那么他如果op1 = ""的话,就会转到你放置"end:"的地方去

第二题: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim frm As Form
frm = New Form2
frm.Show()
End Sub


VB.NET问题!200分视频

相关评论:
  • 15820893622VB.NET问题!200分
    鬱服质第一个问题:跳转到另一个窗体使用语句 Object.show,你可以在form1任一控件事件下编写form2.show就行,如果还隐藏form1的话,再添加一句from1.hide 第二个问题 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click op1 = txt1.Text ...

  • 15820893622vb.net 画直线问题
    鬱服质Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim graph As Graphics = Me.CreateGraphics Dim pen2 As Pen = New Pen(Color.Green, 3)graph.DrawLine(pen2, 400, 400, 500, 200)End Sub End Class ...

  • 15820893622vb.net \/c# winform窗体小程序,问题my.settings不能使用。
    鬱服质很有可能开发者写的是电脑的绝对路径,而这个绝对路径在客户电脑上这个文件不存在的;其实开发者可以判断路径和文件是否存在,如果不存在则创建这个文件的。这是个Bug

  • 15820893622算术运算导致溢出 vb.net
    鬱服质第一问题好理解, 可能 key 是integer类型缘故吧,把它改为Byte。第二个没读懂,你换个方式试试,如:'Dim bts() As Byte = My.Computer.FileSystem.ReadAllBytes("") Dim bst As System.IO.BinaryReader = New System.IO.BinaryReader(System.IO.File.OpenRead("D:\\Program Files(Green)\\人...

  • 15820893622VB.NET实例化类
    鬱服质可以,但是变量不能用ClassA或B来定义,可以用Object,或ClassA,ClassB的基类,,使用类的成员时,再把变量类型转换成相应的类

  • 15820893622vb.net 关于2维数组求平均数的问题
    鬱服质Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer For i = 1 To 2 cj(i, 0) = InputBox("输入第" & i & "位学生的学号")cj(i, 1) = InputBox("输入数学")cj(i, 2) = InputBox("输入心理学"...

  • 15820893622VB.net中如何画图?
    鬱服质问题描述:VB6中的form1.circle (100,200),rgb(0,255,0)的语句如何在VB中使用啊?急用啊!!!解析:VB与VB不同。VB已经有专门绘图的类。可以定义笔刷然后用Drawing类中的方法绘制。Private Sub DrawEllipse()Dim myPen As New System.Drawing.Pen(System.Drawing.Color.Red)Dim formGraphics as ...

  • 15820893622VB.net2000的自动垃圾回收机制到底管用么???!!!
    鬱服质很简单,你没有正确理解VB.net的内存自动回收机制,仔细看一下MSDN,好好研究一下相关的内容。其实JAVA的内存自动回收机制与VB.net是类似的,如果你用VB.NET做不好,换用JAVA照样做不好。其实,你已经发现了为什么内存不能回收,只是你没意识到罢了。为什么要用全局变量呢?给你举个极端的例子吧:...

  • 15820893622vb.net读取txt的数据作图问题
    鬱服质1,这一类随时间而变化的曲线图,通常把横轴作为时间,把纵轴作为相应的值,在这里就是密度值。2,点的集合就是线;一组时间、密度值,对应一个点,把点连接起来就构成了线。二、在VB.NET中作图,需要知道并解决几个问题:1,与VB6一样,VB.NET中默认的坐标系统,左上角为坐标原点,X轴的正向为...

  • 15820893622vb.net用代码向另一个窗体添加命令按钮
    鬱服质并加入到窗体对象中. 如: 在 form2 点击 add 按钮后, form1 会新添加一个按钮,单击显示hello , 下面是两个窗口类. public class form1 inherits system.windows.forms.form '这是一个什么都没有的空窗体 public sub new() me.size=new size(200,200) end...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网