1、先看看界面

声明一个全局boolean变量,用来标记richtextbox中文本变化和保存情况
Dim bSave As Boolean
Private Sub rtbox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rtbox.TextChanged |
文本发生了改变,则将变量bSave置为False
2、关于在ComboBox中加载用户系统上的字体列表的问题
加载用户系统上的字体到写字板ComboBox的字体栏上,为了实现他,也花费了少时间,最终在VS.NET自带的Help中找到了答案。
下面这段代码是加载当地系统中所有字体到Combobox中
Dim allfonts As FontFamily
For Each allfonts In System.Drawing.FontFamily.Families
comboxFont.ITems.Add(allfonts.Name)
Next
|

3、状态栏的隐藏
就是在“查看”菜单中有个check按钮,当checked=true时点击它状态栏就隐藏,反之就取消隐藏。
Private Sub mStatusbar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mStatusbar.Click
If mStatusbar.Checked = True Then
StatusBar1.Visible = False
mStatusbar.Checked = False
Else
StatusBar1.Visible = True
mStatusbar.Checked = True
End If
End Sub
|
4、关于字体样式的问题
我觉得这是这个程序中最艰难的一部分,为了实现这个功能,查阅了不少资料,最终得以实现不用字体对话框设置,只用工具栏上按钮设置就能实现几个字体样式并用的功能。

上图中的“样”字就是既加粗又斜体又下划线,不要以为这个功能实现很简单,因为最初我发现如果一个字是加粗的,当我给他选择斜体按钮时,发现她原来的粗体样式消失了,变成只有斜体样式了,也就是说字体的样式不能并用,后来终于发现解决的方法。
其中的一个“or”确实十分关键,其了决定性作用。关键还是对VB的语法不太熟悉,如果是C++语言就好了。下面看看代码:
下面这个函数是用来增加字体的样式,比如加粗,下划线等等
Public Sub AddFontStyle(ByVal rtb As RichTextBox, _
ByVal style As System.Drawing.FontStyle)
|
如果选择的文本长度大于0,将一个一个字符地增加样式。
这是十分必要的!因为被选择的字符可能同时含有多种样式,而我们的原意只是保持所有原来的样式,同时增加上指定的样式。
If rtb.SelectionLength > 0 Then
Dim selStart As Integer = rtb.SelectionStart
Dim selLength As Integer = rtb.SelectionLength
Dim currFont As System.Drawing.Font
Dim currStyle As System.Drawing.FontStyle
Dim i As Integer
For i = 0 To selLength - 1
|
选择的字符
rtb.Select(selStart + i, 1)
|
得到被选择字符的字体
currFont = rtb.SelectionFont
|
得到现在的样式,同时增加指定的样式
currStyle = currFont.Style
currStyle = currStyle Or style
|
然后使字符拥有新的字体和新的样式,有可能出现异常,因为不是所有字体都支持所有的样式,所以这里捕捉异常。
Try
rtb.SelectionFont = New Font(currFont.FontFamily, currFont.Size, _ currStyle)
Catch ex As Exception
End Try
Next
rtb.Select(selStart, selLength)
Else
rtb.SelectionFont = New Font(rtb.SelectionFont, _
rtb.SelectionFont.Style Or style)
End If
End Sub
|
同样,取消样式也有同样的问题,当然也有同样的解决方法
下面这个函数是用来去除用户指定的字体样式,如加粗,下划线等等
Public Sub RemoveFontStyle(ByVal rtb As RichTextBox, _
ByVal style As System.Drawing.FontStyle)
|
如果选择文本的长度大于0,将一个一个去除样式。
这是十分必要的!因为选择的文本中可能有许多不同的样式,而我们的原意是
保持所有原来的样式,除了那个要被去除的样式
If rtb.SelectionLength > 0 Then
Dim selStart As Integer = rtb.SelectionStart
Dim selLength As Integer = rtb.SelectionLength
Dim currFont As System.Drawing.Font
Dim currStyle As System.Drawing.FontStyle
Dim i As Integer
For i = 0 To selLength - 1
|
选择一个字符
rtb.Select(selStart + i, 1)
|
得到被选择字符的字体
currFont = rtb.SelectionFont
|
得到被选择字符的样式,同时去除要被除去的那个样式
currStyle = currFont.Style
currStyle = currStyle And Not style
|
然后赋予这些字符新的字体和样式
rtb.SelectionFont = New Font(currFont.FontFamily, currFont.Size, _ currStyle)
Next
|
保持原有的选择
rtb.Select(selStart, selLength)
Else
rtb.SelectionFont = New Font(rtb.SelectionFont, _
rtb.SelectionFont.Style And Not style)
End If
End Sub
| [1] [2] [3] 下一页 |