65.9K
CodeProject 正在变化。 阅读更多。
Home

Notepad.NET - 在 Visual Basic 中创建记事本克隆

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.57/5 (21投票s)

2008年4月27日

CPOL

3分钟阅读

viewsIcon

132535

downloadIcon

14617

用 Visual Basic 创建 Notepad 的克隆。

引言

这是一个简单且功能齐全的标准 Windows 记事本克隆。本文介绍了记事本中使用的功能,并讲述了编写代码的逻辑。还提供了代码。

背景

记事本基本有文件、编辑、格式、查看和帮助菜单。

我重新创建了文件、编辑、格式和帮助菜单。我排除了查看菜单,因为我认为简单的记事本应用程序不需要任何状态栏。如果您认为需要状态栏,我也提供了代码。

使用代码

文件菜单

新建 - 如果文档已修改,则会显示一个带有“是”和“否”按钮的消息框,询问是否应保存。代码是

If doc.Modified = True Then
            Dim x As Integer = MsgBox("Do you want to save the modified document ?", MsgBoxStyle.YesNo)
            If x = vbYes Then
                SaveToolStripMenuItem.PerformClick()
            Else
                Me.Text = "Untitled - Notepad.NET"
                doc.Clear()
            End If
            Me.Text = "Untitled - Notepad.NET"
            doc.Clear()

        End If          

打开 - 文件已打开,Notepad.NET 使用 Rijndael 加密 - HEX 是编码类型。我从这个名为“Crypto.vb”的网站上获取了一个加密类。我已实现它来解密 TextBox doc 中的数据。

保存 - 文件使用相同的加密算法保存。

并且

还使用了 PageSetupDialog。

编辑菜单具有标准的剪切、复制、粘贴、撤销等功能。

在处理查找、查找下一个和替换部分时,曾有过很大的困惑和困难。但我最终成功解决了。

查找和替换的逻辑与代码

首先,我创建了一个名为 FindText 的函数,该函数依赖于 start_pos(声明为 Integer)。这是起始位置。然后我声明了两个私有变量 - target_pos(用于确定目标位置的整数)和 target(声明为 string)。

然后我声明了 pos 作为整数

Pos 被赋值给 InStr 函数,该函数确定文本的位置。

所以,如果 pos 大于 0,则找到文本。所以要选择文本,target_pos 被赋值给 ps。

选择对我来说是一个相当大的挑战。

文本框的 SelectionStart 属性决定了起始位置。所以它是 target_pos 减 1。选择一直到末尾。所以 SelectionLength 属性被设置为

Len(target)-(Len(target)-Len(target))

如果找不到,则清除 target 变量并显示消息“未找到文本”。

这不是很简单吗???

我编写的代码是

代码如下:

Private Sub FindText(ByVal start_pos as integer)
 Dim pos As Integer


        pos = InStr(start_pos, doc.Text.ToLower, tf.Text.ToLower)
        If pos > 0 Then
            target_pos = pos
            doc.SelectionStart = target_pos - 1
            doc.SelectionLength = Len(target) - (Len(target) - Len(target))

        Else
            MsgBox("Text Not Found")
            target = ""
        End If

End Sub    


   target = InputBox("Enter Word to find")
        FindText(1)

        If doc.SelectedText <> target Then

        Else
            x = InputBox(String.Format("Selected text is : {0}. Enter text to replace", target))
            doc.SelectedText = x
        End If

以上是替换的代码。

自动换行是文本框的默认属性。

FindNext 的代码也很简单

只需将 target_pos 加 1。

所以代码将是

 FindText(target_pos + 1) 

可以通过声明新的 FontDialog 来更改字体,将选定的字体赋给文本框字体,并将文本框的字形设置为对话框的选定样式。

就是这样。

很简单,不是吗?

如果您认为可以添加新功能,请发表评论,我将收到通知并尽快回复。

<script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> var pageTracker = _gat._getTracker("UA-2980480-6"); pageTracker._initData(); pageTracker._trackPageview(); </script>
© . All rights reserved.