求1个VB写记事本的代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求1个VB写记事本的代码相关的知识,希望对你有一定的参考价值。

求退出的代码 (要像Windows记事本一样,如果文本被修改,点退出时提示是否保存,不要给我End)点右上角的叉也要弹出提示。 如果需要什么控件请注明,谢谢啦。

用VB做一个记事本实在不很复杂,我们完全可以通过向导来很方便地做出来。但本文只打算讨论用手动方法制作记事本,旨在向VB初学者展示:学VB原来是如此容易!
通过阅读、研究本文并按本文所述进行尝试,初学者将学到很多东西,如怎样使用RichText控件来打开和保存文件,怎样制作菜单、工具栏和状态栏以及如何对其编写代码等。

第一章 让我们的记事本马上运行

急于求成是初学者共有的心愿。那好,请按如下三个步骤做,我们的愿望立即就可以实现!

步骤一:绘制界面。
新建一个标准EXE工程,将其Caption属性改为“超级记事本”,点击Icon属性给它找个合适的Icon图标。单击菜单“工程”-“部件”,在弹出的“部件”对话框里找到Microsoft RichText Box 6.0和公共对话框Microsoft Common Dialog 6.0并选中它们,单击“确定”按钮。这时左边的工具栏上出现了我们刚才新添的两个控件了。在窗体上绘制RichText Box和Commn Dialog,其中RichText Box的大小和位置可不用理睬,我们将在代码中处理它,当然,有必要把它的ScrollBar属性设为2-rtfVertical,这样在打开和编辑文件时垂直滚动条才可用。

步骤二:编辑菜单。
按Ctrl+E调出菜单编辑器,我们来做如下几个菜单:
一.文件菜单:
文件(第一层) mnuFile
新建(第二层) mnuNew
打开(第二层) mnuOpen
保存(第二层) mnuSave
- (第二层) mnuFileSep (分隔线)
退出(第二层) mnuExit
二.编辑菜单:
编辑(第一层) mnuEdit
复制(第二层) mnuCopy
剪切(第二层) mnuCut
粘贴(第二层) mnuPaste
- (第二层) mnuEditSep (分隔线)
全选(第二层) mnuSelecAll
三.搜索菜单:
搜索(第一层) mnuSearch
查找(第二层) mnuFind
查找下一个(第二层) mnuFindOn
四.帮助菜单:
帮助(第一层) mnuHelp
使用说明(第二层) mnuUsage
关于(第二层) mnuAbout
(注:各菜单项的快捷键请自行设置)

好了,其它的菜单项以后再根据需要添加。现在进入:

步骤三:编写代码。

'声明查找变量
Dim sFind As String
'声明文件类型
Dim FileType, FiType As String

'初始化程序
Private Sub Form_Load()
'设置程序启动时的大小
Me.Height = 6000
Me.Width = 9000
End Sub

'设置编辑框的位置和大小
Private Sub Form_Resize()
On Error Resume Next '出错处理
RichTextBox1.Top=20
RichTextBox1.Left=20
RichTextBox1.Height = ScaleHeight-40
RichTextBox1.Width = ScaleWidth-40
End Sub

'新建文件
Private Sub mnuNew_Click()
RichTextBox1.Text = "" '清空文本框
FileName = "未命名"
Me.Caption = FileName
End Sub

'打开文件
Private Sub mnuOpen_Click()
CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
CommonDialog1.ShowOpen
RichTextBox1.Text = "" '清空文本框
FileName = CommonDialog1.FileName
RichTextBox1.LoadFile FileName
Me.Caption = "超级记事本:" & FileName
End Sub

'保存文件
Private Sub mnuSave_Click()
CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"
CommonDialog1.ShowSave
FileType = CommonDialog1.FileTitle
FiType = LCase(Right(FileType, 3))
FileName = CommonDialog1.FileName
Select Case FiType
Case "txt"
RichTextBox1.SaveFile FileName, rtfText
Case "rtf"
RichTextBox1.SaveFile FileName, rtfRTF
Case "*.*"
RichTextBox1.SaveFile FileName
End Select
Me.Caption = "超级记事本:" & FileName
End Sub

'退出
Private Sub mnuExit_Click()
End
End Sub

'复制
Private Sub mnuCopy_Click()
Clipboard.Clear
Clipboard.SetText RichTextBox1.SelText
End Sub

'剪切
Private Sub mnuCut_Click()
Clipboard.Clear
Clipboard.SetText RichTextBox1.SelText
RichTextBox1.SelText = ""
End Sub

'全选
Private Sub mnuSelectAll_Click()
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
End Sub

'粘贴
Private Sub mnuPaste_Click()
RichTextBox1.SelText = Clipboard.GetText
End Sub

'查找
Private Sub mnuFind_Click()
sFind = InputBox("请输入要查找的字、词:", "查找内容", sFind)
RichTextBox1.Find sFind
End Sub

'继续查找
Private Sub mnuFindOn_Click()
RichTextBox1.SelStart = RichTextBox1.SelStart + RichTextBox1.SelLength + 1
RichTextBox1.Find sFind, , Len(RichTextBox1)
End Sub

'使用说明
Private Sub mnuReadme_Click()
On Error GoTo handler
RichTextBox1.LoadFile "Readme.txt", rtfText '请写好Readme.txt文件并存入程序所在文件夹中
Me.Caption = "超级记事本:" & "使用说明"
Exit Sub
handler:
MsgBox "使用说明文档可能已经被移除,请与作者联系。", vbOKOnly, " 错误信息"
End Sub

'关于
Private Sub mnuAbout_Click()
MsgBox "超级记事本 Ver1.0 版权所有(C) 2001 土人",vbOKOnly,"关于"
End Sub

'设置弹出式菜单(即在编辑框中单击鼠标右键时弹出的动态菜单)
Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu mnuEdit, vbPopupMenuLeftAlign
Else
Exit Sub
End If
End Sub

'防止在切换输入法时字体自变(感谢王必成先生提供此方案)
Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeySpace Then
RichTextBox1.SelFontName = CommonDialog1.FontName
End If
End Sub

至此,我们的记事本可以编译使用了。点击菜单“文件”-“生成XXX.EXE”,回到桌面运行我们的记事本看看,是不是颇有成就感?
当然,这样的记事本还比较粗糙,我们还需要做些工作,请看下一章。

第二章 美化程序界面

多数字处理软件都有工具栏和状态栏。工具栏和状态栏除了能美化我们的程序使其更具有专业性质外,还给用户带来操作上的便利。现在我们就来做一做这两样东西。

一.工具栏
(一)制作工具栏
单击“工程”-“部件”,选中Microsoft Windows Common Control 6.0并确定。这时,我们要用到的控件就出现在左边的工具栏上了。
要做工具栏,首先需要一个叫ImageList的控件来装载图像。在程序界面上添加它,然后右键单击此控件,左键单击“属性”,弹出“属性页”对话框的“图像”,再单击“插入图片”就可以一次性装载图片了(如不满意,以后还可以添加)。图片可在C:\Microsoft Visual Studio\Common\Graphics\Bitmaps\TlBr_W95下选择(这里假设你的VB安装在C盘下)。注意了:在插入图片时给每一张图片注明关键字,以便在引用图片时不至于混乱。如插入“新建”的图片,我们在“关键字”栏注明“New”。
图片有了,接下来在程序界面添加工具栏(ToolBar)。添加后工具栏就出现在菜单下面,右键单击它,选择“属性”,在弹出的“属性页”对话框中的“通用”项作些设置,主要如下两项:
1.“图像列表”:选择ImageList1
2.“样式”:根据喜爱选择1-trbStandard或者2-trbFlat
继续点击“属性页”的“按钮”选项,插入若干按钮。按钮有多种样式,请根据需要设置。这里请一定注意:每一个与用户操作有关的按钮都必须注明关键字、装载图片,如“新建”按钮,在“关键字”项注明“新建”,在“图像”项键入“New”(即ImageList1中的图片关键字),需要的话还可以在“工具提示文本”项填入适当的提示语。
(二)编写工具栏的按钮代码
工具栏按钮的代码编辑很简单,可以按照下面的格式去编写:
Private Sub ToolBar1_ButtonClick(ByVal Button As MSComctlLib.Button)
On Error Resume Next '出错处理
Select Case Button.Key '按关键字选择
Case "新建"
mnuNew_Click '等于菜单项“新建”被单击
Case "打开" '等于菜单项“打开”被单击
mnuOpen_Click
'......(继续编写其它按钮的代码)
End Select
End Sub

完成后试运行一下我们的程序,我们发现,有了工具栏之后,程序变得漂亮多了,只是有一个问题:打开一个较长的文档后,编辑框的下拉滚动条向上的箭头不见了。原因是:工具条占用一定的空间。解决方法:将“设置编辑框的位置和大小”中的RichTextBox1.Top = 20 和 RichTextBox1.Height = Me.ScaleHeight - 40分别改为RichTextBox1.Top = 380,RichTextBox1.Height = Me.ScaleHeight - 400即可。

二.状态栏
(一)制作状态栏
状态栏的英文名字叫StatusBar,在窗体上添加它后会默认出现在窗体的最下方。用鼠标右键点击它,调出“属性页”对话框,单击“窗格”项,插入一些窗格,可以将各个窗格的“样式”设置为:
0-sbrText 显示文本,需编写代码
1-sbrCaps 显示大小写状态,无需编程
2-sbrNum 显示NumLock键开关状态,无需编程
3-sbrIns 显示Insert键状态,无需编程
4-sbrScr1
5-sbrTime 显示时间,不编程时时间不会随系统时钟变化
6-sbrDate 显示日期,无需编程
注意:加进状态栏后需将Form_Resze中的RichTextBox1.Height = Me.ScaleHeight - 400改为RichTextBox1.Height = Me.ScaleHeight - 600。
(二)状态栏根据其“样式”属性决定用不用编写代码(如上文所述)。下面举些例子,读者可以认真揣摩,从而达到举一反三的效果。

例一:用户选取了“新建”后,让第一个窗格显示:“目前状态:正在打开文件《……》”。请将下面代码写进“打开”菜单里面:
StatusBar1.Panels(1).Text = "目前状态:正在打开文件" & "《" &CommonDialog1.FileTitle & "》"

例二:让第三个窗格显示时间并让时间跟随系统时钟变化。
首先,给程序加一个Timer控件,将其Interval属性设为1000。然后:
在Form_Load过程加入:StatusBar1.Panels(1).Text = Time;然后给Timer控件编写代码:

Private Sub Timer1_Timer()
If StatusBar1.Panels(3).Text <> CStr(Time) Then
StatusBar1.Panels(3).Text = Time
End If
End Sub

例三:当编辑框的文本发生变化时让第一个窗格显示:“正在编辑文档:文件名”。
Private Sub RichTextBox1_Chang()
StatusBar1.Panels(1).Text = "正在编辑文档:" & CommonDialog1.FileName
End Sub

辛苦了那么久,我们现在已经拥有一个象模象样的记事本了。这个记事本由于用了RichText控件,理论上它能打开和编辑任意大的文档,使用起来的确比Windows自带的记事本方便得多。当然,还有一些其它的功能需要添加和完善,这就靠你慢慢去完成了。
回答完毕!
参考技术A 网上多的是,搜一个吗!
http://www.baidu.com/s?wd=VB++%BC%C7%CA%C2%B1%BE%B4%FA%C2%EB
步骤一:绘制界面。新建一个标准EXE工程,将其Caption属性改为“超级记事本”,点击Icon属性给它找个合适的Icon图标。单击菜单“ 工程”-“部件”,在弹出的“部件”对话框里找到Microsoft RichText Box 6.0和公共对话框Microsoft Common Dialog 6.0并选中它们,单击“确定”按钮。这时左边的工具栏上出现了我们刚才新添的两个控件了。在窗体上绘制RichText Box和Commn Dialog,其中RichText Box的大小和位置可不用理睬,我们将在代码中处理它,当然,有必要把它的ScrollBar属性设为2-rtfVertica l,这样在打开和编辑文件时垂直滚动条才可用。步骤二:编辑菜单。按Ctrl+E调出菜单编辑器,我们来做如下几个菜单:一.文件菜单:文件(第一层) mnuFile新建(第二层) mnuNew打开(第二层) mnuOpen保存(第二层) mnuSave- (第二层) mnuFileSep (分隔线)退出(第二层) mnuExit二.编辑菜单:编辑(第一层) mnuEdit复制(第二层) mnuCopy剪切(第二层) mnuCut粘贴(第二层) mnuPaste- (第二层) mnuEditSep (分隔线)全选(第二层) mnuSelecAll三.搜索菜单:搜索(第一层) mnuSearch查找(第二层) mnuFind查找下一个(第二层) mnuFindOn四.帮助菜单:帮助(第一层) mnuHelp使用说明(第二层) mnuUsage关于(第二层) mnuAbout(注:各菜单项的快捷键请自行设置)好了,其它的菜单项以后再根据需要添加。现在进入:步骤三:编写代码。'声明查找变量Dim sFind As String'声明文件类型Dim FileType, FiType As String'初始化程序Private Sub Form_Load()'设置程序启动时的大小Me.Height = 6000Me.Width = 9000End Sub'设置编辑框的位置和大小Private Sub Form_Resize()On Error Resume Next '出错处理RichTextBox1.Top=20RichTextBox1.Left=20RichTextBox1.Height = ScaleHeight-40RichTextBox1.Width = ScaleWidth-40End Sub'新建文件Private Sub mnuNew_Click()RichTextBox1.Text = "" '清空文本框FileName = "未命名"Me.Caption = FileName End Sub'打开文件Private Sub mnuOpen_Click()CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"CommonDialog1.ShowOpenRichTextBox1.Text = "" '清空文本框FileName = CommonDialog1.FileNameRichTextBox1.LoadFile FileNameMe.Caption = "超级记事本:" & FileName End Sub'保存文件Private Sub mnuSave_Click()CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"CommonDialog1.ShowSaveFileType = CommonDialog1.FileTitleFiType = LCase(Right(FileType, 3))FileName = CommonDialog1.FileNameSelect Case FiTypeCase "txt"RichTextBox1.SaveFile FileName, rtfTextCase "rtf"RichTextBox1.SaveFile FileName, rtfRTFCase "*.*"RichTextBox1.SaveFile FileNameEnd SelectMe.Caption = "超级记事本:" & FileNameEnd Sub'退出Private Sub mnuExit_Click()EndEnd Sub'复制Private Sub mnuCopy_Click()Clipboard.ClearClipboard.SetText RichTextBox1.SelTextEnd Sub'剪切Private Sub mnuCut_Click()Clipboard.ClearClipboard.SetText RichTextBox1.SelTextRichTextBox1.SelText = ""End Sub'全选Private Sub mnuSelectAll_Click()RichTextBox1.SelStart = 0RichTextBox1.SelLength = Len(RichTextBox1.Text)End Sub'粘贴Private Sub mnuPaste_Click()RichTextBox1.SelText = Clipboard.GetTextEnd Sub'查找Private Sub mnuFind_Click()sFind = InputBox("请输入要查找的字、词:", "查找内容", sFind)RichTextBox1.Find sFindEnd Sub'继续查找Private Sub mnuFindOn_Click()RichTextBox1.SelStart = RichTextBox1.SelStart + RichTextBox1.SelLength + 1RichTextBox1.Find sFind, , Len(RichTextBox1)End Sub'使用说明Private Sub mnuReadme_Click()On Error GoTo handlerRichTextBox1.LoadFile "Readme.txt", rtfText '请写好Readme.txt文件并存入程序所在文件夹中Me.Caption = "超级记事本:" & "使用说明"Exit Subhandler:MsgBox "使用说明文档可能已经被移除,请与作者联系。", vbOKOnly, " 错误信息"End Sub'关于Private Sub mnuAbout_Click()MsgBox "超级记事本 Ver1.0 版权所有© 2001 土人",vbOKOnly,"关于"End Sub'设置弹出式菜单(即在编辑框中单击鼠标右键时弹出的动态菜单)Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 2 ThenPopupMenu mnuEdit, vbPopupMenuLeftAlignElseExit SubEnd IfEnd Sub'防止在切换输入法时字体自变(感谢王必成先生提供此方案)Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeySpace ThenRichTextBox1.SelFontName = CommonDialog1.FontNameEnd IfEnd Sub至此,我们的记事本可以编译使用了。点击菜单“文件”-“生成XXX.EXE”,
参考技术B 我的空间里面正好有一个这样的软件:
http://hi.baidu.com/495661277/blog/item/ae2d3d75a46eb717b151b948.html
vb编写的记事本
2010-03-16 23:51
2010-3-16
VB编写的记事本,准确的说是便签,可以方便的进行记录并自动保存他.
下面的程序引用到了我在其余模块中的公共函数,这里没有贴上来.

代码如下:
Private TxtChange As Boolean '文本是否改变的标志
'移动没有边框的窗体
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub ReleaseCapture Lib "user32" ()
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2

Public Function GetFileName() As String
'获得文本的保存名称
'用第一行文本内容+时间 作为名字保存
Dim i As Integer
Dim ch As String
Dim Temp As String
'如果已经保存过,则使用原来的名称
If LabFileName.Caption <> "" Then
GetFileName = LabFileName.Caption
Exit Function
End If
For i = 1 To Len(Txt.Text)
ch = Mid(Txt.Text, i, 1)
If ch <> Chr(13) Then '不是回车符号
If ch <> Chr(10) Then
Temp = Temp & ch
End If
Else '遇到回车符号
Exit For '遇到回车退出
End If
Next i
If ch <> Chr(13) Then
' MsgBox "文本只有1行!"
Temp = Temp & Mid(Txt.Text, i - 1, 1)
End If
Temp = Trim(Temp)
If Temp <> "" Then
GetFileName = App.Path & "\扩展文件\仙都记事本\" & Temp & " " & year(Date) & "-" & Month(Date) & "-" & Day(Date) & " " & Hour(Time) & "-" & Minute(Time) & "-" & Second(Time) & ".txt"
Else
GetFileName = App.Path & "\扩展文件\仙都记事本\" & " " & year(Date) & "-" & Month(Date) & "-" & Day(Date) & " " & Hour(Time) & "-" & Minute(Time) & "-" & Second(Time) & ".txt"
End If
LabFileMingCheng = ChuLiFilePath(GetFileName, "文件名称")
End Function

Private Sub FileList_DblClick() '双击文件打开
Dim Str As String
'首先保存下文件
'SaveFile
LoadTxtFile FileList.Path & "\" & FileList.List(FileList.ListIndex), Str
LabFileName.Caption = FileList.Path & "\" & FileList.List(FileList.ListIndex)
LabFileMingCheng.Caption = FileList.List(FileList.ListIndex)
Txt.Text = Str
End Sub

Private Sub Form_Load()
Txt.Text = ""
LabFileName.Caption = ""
FileList.Path = App.Path & "\扩展文件\仙都记事本\"
LabFileNumTotal.Caption = FileList.ListCount
'窗体置顶显示
SetTopMostWindow Me.hwnd, True
'设置透明度
SetTMForm Me.hwnd, 200 '之间的数,0是完全透明,255是完全不透明
End Sub

Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'移动没有边框的窗体
Dim lngReturnValue As Long
If Button = 1 Then
Call ReleaseCapture
lngReturnValue = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub

Private Sub ImgEnd_Click() '退出记事本
SaveFile
Unload Me
End Sub

Private Sub ImgNew_Click() '新建记事
'判断文本内是否有内容并且是否已经保存
If TxtChange = False Then
Txt.Text = ""
TxtChange = False
LabFileName.Caption = ""
Else
'文本发生了改变
'保存之
End If
End Sub

Private Sub Imgsave_Click() '保存文本文件
SaveFile
End Sub

Private Sub ImgTop_Click() '窗体置顶显示
SetTopMostWindow Me.hwnd, True
End Sub

Private Sub LabShowMuLu_Click() '单击颜色改变
LabShowMuLu.ForeColor = vbRed
End Sub

Private Sub LabShowMuLu_DblClick() '双击显示或隐藏记事本的目录
LabShowMuLu.ForeColor = vbRed
If FraFile.Visible = False Then
FraFile.Visible = True
Else
FraFile.Visible = False
End If
End Sub

Private Sub LabShowMuLu_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
LabShowMuLu.ForeColor = vbRed
End Sub

Private Sub Timer_Timer() '定时显示相关的信息
'FileList.Refresh
'LabFileNumTotal.Caption = FileList.ListCount
If TxtChange = True Then
Shape.BackColor = vbRed
Else
Shape.BackColor = vbGreen
End If
LabShowMuLu.ForeColor = &HFF0000
End Sub

Private Sub Txt_Change()
'文本发生改变,提示保存
TxtChange = True
'计算文本的个数
LabNumTotal.Caption = Len(Txt.Text)
End Sub

Public Sub SaveFile() '保存文本文件
Dim FileName As String
If Txt.Text = "" Then Exit Sub
'计算出文本名称
FileName = GetFileName
LabFileName.Caption = FileName
'保存文件
SaveTxtFile FileName, Txt.Text
'文本内容是否改变的标志
TxtChange = False
'更新文件的数目
FileList.Path = App.Path & "\扩展文件\仙都记事本\"
FileList.Refresh
LabFileNumTotal.Caption = FileList.ListCount
End Sub

Private Sub Txt_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) '移动没有边框的窗体
Dim lngReturnValue As Long
If Button = 1 Then
Call ReleaseCapture
lngReturnValue = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If
End Sub
参考技术C '给你全更全的,windows记事本只是管你有没有改动过,若改动得和原先一样还是提示你要保存。而下面这段繁琐的代码会检测内容是否改动过。需多加一个text,可将其可见属性设为flase.
’嘿嘿,这也是我初学vb时编的,有代码邋遢之处,凑合着用吧

Private Sub Form_Unload(cancel As Integer)
Dim txt2 As String
Dim txt5 As String
Dim linesum As Integer
Text5.Text = "" '清空文本框5
If lujing <> "" Then '如果当前有保存过,则另存已有文件至文本框5
Open lujing For Input As #3
Do Until EOF(3)
Dim temp
Line Input #3, temp
If Not EOF(3) Then
Text5.Text = Text5.Text & temp & vbCrLf '如果不是文本框中的最后文字,则每行结尾加一换行
Else
Text5.Text = Text5.Text & temp '否则不加换行
End If
Loop
Close #3
txt5 = Text5.Text '将文本框中文字传送给txt5
ElseIf lujing2 <> "" Then '如果当前有另存过,则保存已有文件至文本框5
Open lujing2 For Input As #3
Do Until EOF(3)
Dim temp1
Line Input #3, temp1
If Not EOF(3) Then
Text5.Text = Text5.Text & temp1 & vbCrLf '如果不是最后,则加换行
Else
Text5.Text = Text5.Text & temp1 '否则不加换行符
End If
Loop
Close #3
txt5 = Text5.Text
End If
txt2 = Text2.Text
If txt2 = txt5 Then '比较文本框2是否与文本框5中的文字一样,是则代表不用保存,直接退出
End
Else '否之,则弹对话框提示是否需要保存
Dim tishi As String
tishi = MsgBox("要保存更改吗?", vbYesNoCancel + vbQuestion, "提示")
If tishi = vbNo Then '如果选择不保存,则退出程序
End
ElseIf tishi = vbCancel Then '如果选择取消,则退出此过程
Exit Sub
Else '如果选择保存,执行下面
If CD.FileName = "" Then '如果文件从示被保存过,则弹出保存对话框
CD.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"
CD.CancelError = True
On Error GoTo AA
CD.ShowSave
Open CD.FileName For Output As #1
Print #1, Text2.Text
Close #1
MsgBox "已保存至" & CD.FileName, vbOKOnly, "提示"
Else '如果文件曾被保存过,则直接保存
Open CD.FileName For Append As #1
Print #1, Text2.Text
Close #1
MsgBox "已保存", vbOKOnly, "提示"
End If
AA:
Exit Sub
End If
End If
End Sub
参考技术D 在Form_Unload事件里Cancel赋值为1将不关闭窗体
下面的代码演示了Text1内容为零时才能关闭窗体
Private Sub Form_Unload(Cancel As Integer)
If Text1.Text = "0" Then
Cancel = 0
Else
Cancel = 1
End If

End Sub

求:用java写的记事本的代码...

是要能编辑文字的那一部分... 谢谢

参考技术A color.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
JColorChooser jColor = new JColorChooser(); // 调用颜色面板,设置前景就可更改字体颜色
Color fcolor = ja.getForeground(); //得到前景色
ja.setForeground(jColor.showDialog(ja, "选择字体颜色", fcolor)); //设置前景色

);

cancel.addActionListener(new ActionListener() //为取消按钮添加临听器
public void actionPerformed(ActionEvent e)
fontMain.setVisible(false); //当事件触发,把fontMain设为隐藏

);

ok.addActionListener(new ActionListener() //为确定按钮添加临听器
public void actionPerformed(ActionEvent e)
fontMain.setVisible(false); //当事件触发,把fontMain设为隐藏

);

font.addActionListener(new ActionListener() //为font按钮添加临听器
public void actionPerformed(ActionEvent e)
fontJd.setLocationRelativeTo(NewProgram.this); //设定fontJd的位置
fontJd.setVisible(true); //使fontJd为可见

int style = 0;
if (fontShape.getSelectedItem().equals("常规") == true) //以下为设置字体的代码
style = Font.PLAIN; // 将style设置为常规字形保存


if (fontShape.getSelectedItem().equals("斜体") == true)
style = Font.ITALIC;

if (fontShape.getSelectedItem().equals("粗体") == true)
style = Font.BOLD;

if (fontShape.getSelectedItem().equals("粗斜体") == true)
style = Font.BOLD + Font.ITALIC;


// 设置字体大小的 //字号
String[] size = "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10" ;

for (int i = 0; i < size.length; i++)
if (sizeList.getSelectedItem().equals(size[i]) == true) //设置字体字号
ja.setFont(new Font(String.valueOf(fontList
.getSelectedItem()), style, (10 - i) * 10));
fontJd.dispose();
;
请参考
参考技术B 我只知道李刚的java讲义里有这个例子
,伱百度一下肯定有
参考技术C 什么意思 参考技术D import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.BorderFactory;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;

public class JNotePadUI extends JFrame
private JMenuItem menuOpen;
private JMenuItem menuSave;
private JMenuItem menuSaveAs;
private JMenuItem menuClose;

private JMenu editMenu;
private JMenuItem menuCut;
private JMenuItem menuCopy;
private JMenuItem menuPaste;

private JMenuItem menuAbout;

private JTextArea textArea;
private JLabel stateBar;
private JFileChooser fileChooser;

private JPopupMenu popUpMenu;

public JNotePadUI()
super("新建文本文件");
setUpUIComponent();
setUpEventListener();
setVisible(true);


private void setUpUIComponent()
setSize(640, 480);

// 菜单栏
JMenuBar menuBar = new JMenuBar();

// 设置「文件」菜单
JMenu fileMenu = new JMenu("文件");
menuOpen = new JMenuItem("打开");
// 快捷键设置
menuOpen.setAccelerator(
KeyStroke.getKeyStroke(
KeyEvent.VK_O,
InputEvent.CTRL_MASK));
menuSave = new JMenuItem("保存");
menuSave.setAccelerator(
KeyStroke.getKeyStroke(
KeyEvent.VK_S,
InputEvent.CTRL_MASK));
menuSaveAs = new JMenuItem("另存为");

menuClose = new JMenuItem("关闭");
menuClose.setAccelerator(
KeyStroke.getKeyStroke(
KeyEvent.VK_Q,
InputEvent.CTRL_MASK));

fileMenu.add(menuOpen);
fileMenu.addSeparator(); // 分隔线
fileMenu.add(menuSave);
fileMenu.add(menuSaveAs);
fileMenu.addSeparator(); // 分隔线
fileMenu.add(menuClose);

// 设置「编辑」菜单
JMenu editMenu = new JMenu("编辑");
menuCut = new JMenuItem("剪切");
menuCut.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_X,
InputEvent.CTRL_MASK));
menuCopy = new JMenuItem("复制");
menuCopy.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
menuPaste = new JMenuItem("粘贴");
menuPaste.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_V,
InputEvent.CTRL_MASK));
editMenu.add(menuCut);
editMenu.add(menuCopy);
editMenu.add(menuPaste);

// 设置「关于」菜单
JMenu aboutMenu = new JMenu("关于");
menuAbout = new JMenuItem("关于JNotePad");
aboutMenu.add(menuAbout);

menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(aboutMenu);

setJMenuBar(menuBar);

// 文字编辑区域
textArea = new JTextArea();
textArea.setFont(new Font("宋体", Font.PLAIN, 16));
textArea.setLineWrap(true);
JScrollPane panel = new JScrollPane(textArea,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

Container contentPane = getContentPane();
contentPane.add(panel, BorderLayout.CENTER);

// 状态栏
stateBar = new JLabel("未修改");
stateBar.setHorizontalAlignment(SwingConstants.LEFT);
stateBar.setBorder(
BorderFactory.createEtchedBorder());
contentPane.add(stateBar, BorderLayout.SOUTH);

popUpMenu = editMenu.getPopupMenu();
fileChooser = new JFileChooser();


private void setUpEventListener()
// 按下窗口关闭钮事件处理
addWindowListener(
new WindowAdapter()
public void windowClosing(WindowEvent e)
closeFile();


);

// 菜单 - 打开
menuOpen.addActionListener(
new ActionListener()
public void actionPerformed(ActionEvent e)
openFile();


);

// 菜单 - 保存
menuSave.addActionListener(
new ActionListener()
public void actionPerformed(ActionEvent e)
saveFile();


);

// 菜单 - 另存为
menuSaveAs.addActionListener(
new ActionListener()
public void actionPerformed(ActionEvent e)
saveFileAs();


);

// 菜单 - 关闭文件
menuClose.addActionListener(
new ActionListener()
public void actionPerformed(ActionEvent e)
closeFile();


);

// 菜单 - 剪切
menuCut.addActionListener(
new ActionListener()
public void actionPerformed(ActionEvent e)
cut();


);

// 菜单 - 复制
menuCopy.addActionListener(
new ActionListener()
public void actionPerformed(ActionEvent e)
copy();


);

// 菜单 - 粘贴
menuPaste.addActionListener(
new ActionListener()
public void actionPerformed(ActionEvent e)
paste();


);

// 菜单 - 关于
menuAbout.addActionListener(
new ActionListener()
public void actionPerformed(ActionEvent e)
// 显示对话框
JOptionPane.showOptionDialog(null,
"程序名称:\n JNotePad \n" +
"程序设计:\n \n" +
"简介:\n 一个简单的文字编辑器\n" +
" 可作为验收Java的实现对象\n" +
" 欢迎网友下载研究交流\n\n" +
" /",
"关于JNotePad",
JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE,
null, null, null);


);

// 编辑区键盘事件
textArea.addKeyListener(
new KeyAdapter()
public void keyTyped(KeyEvent e)
processTextArea();


);

// 编辑区鼠标事件
textArea.addMouseListener(
new MouseAdapter()
public void mouseReleased(MouseEvent e)
if(e.getButton() == MouseEvent.BUTTON3)
popUpMenu.show(editMenu, e.getX(), e.getY());


public void mouseClicked(MouseEvent e)
if(e.getButton() == MouseEvent.BUTTON1)
popUpMenu.setVisible(false);


);


private void openFile()
if(isCurrentFileSaved()) // 文件是否为保存状态
open(); // 打开

else
// 显示对话框
int option = JOptionPane.showConfirmDialog(
null, "文件已修改,是否保存?",
"保存文件?", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE, null);
switch(option)
// 确认文件保存
case JOptionPane.YES_OPTION:
saveFile(); // 保存文件
break;
// 放弃文件保存
case JOptionPane.NO_OPTION:
open();
break;



private boolean isCurrentFileSaved()
if(stateBar.getText().equals("未修改"))
return false;

else
return true;


private void open()
// fileChooser 是 JFileChooser 的实例
// 显示文件选取的对话框
int option = fileChooser.showDialog(null, null);

// 使用者按下确认键
if(option == JFileChooser.APPROVE_OPTION)
try
// 开启选取的文件
BufferedReader buf =
new BufferedReader(
new FileReader(
fileChooser.getSelectedFile()));

// 设定文件标题
setTitle(fileChooser.getSelectedFile().toString());
// 清除前一次文件
textArea.setText("");
// 设定状态栏
stateBar.setText("未修改");
// 取得系统相依的换行字符
String lineSeparator = System.getProperty("line.separator");
// 读取文件并附加至文字编辑区
String text;
while((text = buf.readLine()) != null)
textArea.append(text);
textArea.append(lineSeparator);


buf.close();

catch(IOException e)
JOptionPane.showMessageDialog(null, e.toString(),
"开启文件失败", JOptionPane.ERROR_MESSAGE);



private void saveFile()
// 从标题栏取得文件名称
File file = new File(getTitle());

// 若指定的文件不存在
if(!file.exists())
// 执行另存为
saveFileAs();

else
try
// 开启指定的文件
BufferedWriter buf =
new BufferedWriter(
new FileWriter(file));
// 将文字编辑区的文字写入文件
buf.write(textArea.getText());
buf.close();
// 设定状态栏为未修改
stateBar.setText("未修改");

catch(IOException e)
JOptionPane.showMessageDialog(null, e.toString(),
"写入文件失败", JOptionPane.ERROR_MESSAGE);




private void saveFileAs()
// 显示文件对话框
int option = fileChooser.showSaveDialog(null);

// 如果确认选取文件
if(option == JFileChooser.APPROVE_OPTION)
// 取得选择的文件
File file = fileChooser.getSelectedFile();

// 在标题栏上设定文件名称
setTitle(file.toString());

try
// 建立文件
file.createNewFile();
// 进行文件保存
saveFile();

catch(IOException e)
JOptionPane.showMessageDialog(null, e.toString(),
"无法建立新文件", JOptionPane.ERROR_MESSAGE);




private void closeFile()
// 是否已保存文件
if(isCurrentFileSaved())
// 释放窗口资源,而后关闭程序
dispose();

else
int option = JOptionPane.showConfirmDialog(
null, "文件已修改,是否保存?",
"保存文件?", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE, null);

switch(option)
case JOptionPane.YES_OPTION:
saveFile();
break;
case JOptionPane.NO_OPTION:
dispose();




private void cut()
textArea.cut();
stateBar.setText("已修改");
popUpMenu.setVisible(false);


private void copy()
textArea.copy();
popUpMenu.setVisible(false);


private void paste()
textArea.paste();
stateBar.setText("已修改");
popUpMenu.setVisible(false);


private void processTextArea()
stateBar.setText("已修改");


public static void main(String[] args)
new JNotePadUI();

本回答被提问者采纳

以上是关于求1个VB写记事本的代码的主要内容,如果未能解决你的问题,请参考以下文章

用VB程序编写记事本

求:用java写的记事本的代码...

我用VB6制作的记事本不能写字

vb中怎样使记事本中的内容显示在文本框中

求一个简单又有趣的JAVA小游戏代码

求vb6.0函数和语句大全~!