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

用vb.net实现写字板程序报告(二)所有源代码均在这里下载:http://www.up2e.com/resource.php 用vb.net实现写字板程序报告(二)–byzigz(LuHai)luluhai@eastday.com 3)           状态栏的隐藏就是在“查看”菜单中有个check按钮,当checked=true时点击它状态栏就隐藏,反之就取消隐藏。PrivateSubmSt

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

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

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

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

用vb.net实现写字板程序报告(二)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.net/160354.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python重复执行10次_卡bug

    python重复执行10次_卡bugpy3Fdfs修复几个bugpy3Fdfs2.2.0TypeError:typeobjectargumentafter**mustbeamapping,notstrdownload_to_file(local_filename,remote_file_id),提示mustbebytes[],notstrPython3struct格式化下载30k文件出现sock…

    2022年10月21日
    2
  • JAVA大数据后台管理系统

    JAVA大数据后台管理系统一款Java语言基于SpringBoot2.x、Layui、Thymeleaf、MybatisPlus、Shiro、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统,本着简化开发、提升开发效率的初衷,自研了一套个性化的组件,实现了可插拔的组件式开发方式:单图上传、多图上传、下拉选择、开关按钮、单选按钮、多选按钮、图片裁剪等

    2022年5月4日
    56
  • scl语言用plc脉冲做定时器_scl语言用plc脉冲做定时器_西门子PLC SCL语言开发学习笔记(二)…

    scl语言用plc脉冲做定时器_scl语言用plc脉冲做定时器_西门子PLC SCL语言开发学习笔记(二)…今天来讲下scl两个关键的点一、按键事件比如地址I0.0是某个按钮的状态,他只有True和False两个状态,所以我们要获得按下事件需要我们自己模拟。#KeyPress:=”Btn1″ANDNOT#LastKey;#LastKey:=”Btn1″;这样通过对#KeyPress判断是否为True即可获得一次点击事件,相当于|P|把上一次的存起来,然后判断按下,如果你想把按键放在松开时…

    2022年10月6日
    6
  • [译文]三重缓冲:为什么我们爱它

    [译文]三重缓冲:为什么我们爱它
    文章来源:http://www.anandtech.com/video/showdoc.aspx?i=3591&p=1
    文章标题:TripleBuffering:WhyWeLoveIt
    文章作者:DerekWilson
    文章时间:2009年6月26日

    引子

    我们往往不愿过多讨论哪些选项在游戏中应该开启。相反,我们往往把重点放在我们的评测内容上。老实说,我们对玩游戏的建议设置与我们的评测设置非常相似,除

    2022年5月21日
    49
  • mongodb 集合_mongodb原理

    mongodb 集合_mongodb原理最近公司用MongoDB,整合一下网上的优缺点,学习下MongoDB没有找到原作者一:MongoDB的优点和缺点优点面向文档存储(类JSON数据模式简单而强大) 动态查询 全索引支持,扩展到内部对象和内嵌数组 查询记录分析 快速,就地更新 高效存储二进制大对象(比如照片和视频) 复制和故障切换支持 Auto-Sh…

    2025年6月26日
    5
  • NDP和LLDP协议

    NDP和LLDP协议NDP和LLDP作用是一样,NDP:用来发现直接相连的邻居信息,包括邻接设备的设备名称、软/硬件版本、连接端口等,另外还可提供设备的id、端口地址、硬件平台等信息LLDP:它提供了一种标准的链路层发现方式,可以将本端设备的的主要能力、管理地址、设备标识、接口标识等信息组织成不同的TLV(Type/Length/Value,类型/长度/值),并封装在LLDPDU(LinkLaye…

    2022年6月2日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号