前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用vb.net实现写字板程序报告(二)

用vb.net实现写字板程序报告(二)

作者头像
全栈程序员站长
发布2022-09-13 10:36:40
3620
发布2022-09-13 10:36:40
举报

大家好,又见面了,我是你们的朋友全栈君。

所有源代码均在这里下载:

http://www.up2e.com/resource.php

用vb.net实现写字板程序报告(二) –by zigz(LuHai) luluhai@eastday.com

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)关于字体样式的问题

我觉得这是这个程序中最艰难的一部分,为了实现这个功能,查阅了不少资料,最终得以实现不用字体对话框设置,只用工具栏上按钮设置就能实现几个字体样式并用的功能。

图3字体样式并用

上图中的“样”字就是既加粗又斜体又下划线,不要以为这个功能实现很简单,因为最初我发现如果一个字是加粗的,当我给他选择斜体按钮时,发现她原来的粗体样式消失了,变成只有斜体样式了,也就是说字体的样式不能并用,后来终于发现解决的方法。

其中的一个“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

还有几个关于设置字体大小,字体的字体等等就不细说了,如您需要,我可提供所有源代码文件。欢迎与我联系。

luluhai@eastday.com

未完待续……

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160354.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档