RichTextBox和ListView控件的使用总结

本文总结了C#中RichTextBox和ListView控件的使用方法。针对RichTextBox,详细介绍了如何处理Bold按钮事件,包括Font类的属性与枚举Flags的使用。对于ListView,阐述了其在Details模式下显示文件和文件夹的实现,包括ListViewItem、ColumnHeader、ListViewSubItem等类的应用,以及设置图标和切换显示模式的操作。
摘要由CSDN通过智能技术生成

RichTextBox的使用

打开vs编辑器的c#windows应用程序,把相应的控件拖到界面上,一个简单的富文本编辑器,大概就是这样
在这里插入图片描述
然后双击Bold按钮,编辑事件处理程序,代码如下

        private void button1_Click(object sender, EventArgs e)
        {
   
            Font oldFont;

            oldFont = this.richTextBox1.SelectionFont;

            if (oldFont.Bold)
                this.richTextBox1.SelectionFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);
            else
                this.richTextBox1.SelectionFont = new Font(oldFont, oldFont.Style | FontStyle.Bold);

            this.richTextBox1.Focus();
        }

Font类是定义文本格式,这里定义一个变量oldFont用于存储当前选中的文本的文本格式。

Font类中有一个Bold属性,返回一个布尔值,用于判断该文本格式是否是加粗,类似的还有Italic属性,Underline属性,Strikeout属性,分别用于判断是否为倾斜体,是否为下划线,是否有横线贯穿。

如果返回true表明是加粗,则将文本中的加粗变为正常,其他其他属性不变;如果返回false表明未加粗,则将文本加粗。

在Font之外有一个枚举类型FontStyle,用【Flags】特性修饰的。System.FlagsAttribute是一个继承于Attribute的类,放在枚举前面可以将枚举作为一组位域处理,说白了就是可以把枚举中的数值看成一组二进制编码用与或非取反异或等等来处理。
在定义枚举类型前面加上FlagsAttribute,或者简写为【Flags】去掉后面的“Attribute”。FontStyle中有5个常量,Regular = 0,Bold = 1,Italic = 2,Underline = 4,Strikeout = 8,分别转换成二进制代码后为0000,0001,0010,0100,1000。Style也是Font类中的一个属性,在Font中的定义为
public FontStyle Style { get; }
返回的是当前文本格式中的信息样式,即通过二进制位的每一位是0还是1来判断是否满足上述五点中的一点或几点;

上述代码中~符号是按位取反运算符,将FontStyle.Bold取反后为1110,再和被选中文本的Style属性与运算,四个位上依次进行与运算,0和任何数与之后的结果都是0,而1和其他数与之后的结果则是由另一个数来决定,可以看出,末位的0与运算之后一定为0,前面3个则是由Style来决定。所以此次运算的结果宏观上看就是将被选中的文本的样式信息中决定是否为加粗的二进制位变为0,也就是去掉了加粗

然后以此变量和原有的文本信息样式oldFont为参数创建一个Font类的新实例,并赋值给选中的文本,最后达到的结果就是如果被选中的文本是加粗,就去掉,后面的else同理,如果不是加粗,就将文本加粗。

然后依次双击后面三个按钮,编辑事件处理程序

        private void button2_Click(object sender, EventArgs e)
        {
   
            Font oldFont;
            oldFont = this.richTextBox1.SelectionFont;

            if (oldFont.Underline)
                this.richTextBox1.SelectionFont = new Font(oldFont, oldFont.Style & ~FontStyle.Underline);
            else
                this.richTextBox1.SelectionFont = new Font(oldFont, oldFont.Style | FontStyle.Underline);

            this.richTextBox1.Focus();
        }

        private void button3_Click(object sender, EventArgs e)
        {
   
            Font oldFont;
            oldFont = this.richTextBox1.SelectionFont;

            if (oldFont.Italic )
                this.richTextBox1.SelectionFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic );
            else
                this.richTextBox1.SelectionFont = new Font(oldFont, oldFont.Style | FontStyle.Italic );

            this.richTextBox1.Focus();
        }

        private void button4_Click(object sender, EventArgs e)
        {
   
            if (this.richTextBox1.SelectionAlignment == HorizontalAlignment.Center)
                this.richTextBox1.SelectionAlignment = HorizontalAlignment.Left;
            else
                this.richTextBox1.SelectionAlignment = HorizontalAlignment
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值