Font oldFont = this.richTextBox1.SelectionFont;
            Font newFont;
            if (oldFont.Bold)
            {
                newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);//这个“&”和“~”什么用呀?
            }
            else
            {
                newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold);//还有这个”|“ 或运算符
            }
            this.richTextBox1.SelectionFont = newFont;在书上看到这样写,本人没见过,所以请高手解释一下,程序要是显现的是将richtextbox的字体改成粗体。

解决方案 »

  1.   

    oldFont.Style & ~FontStyle.Bold//取消Bold风格
    oldFont.Style | FontStyle.Bold)//设置Bold风格
      

  2.   

    二进制非1即0,假如用一个二进制位表示风格的设置与否,1表示设置Bold,0表示不设置
    那么 FontStyle =1 
    ~ FontStyle  = 0 //对1取反
    oldFont.Style & ~FontStyle.Bold就是oldFont.Style & 0
    假如oldFont.Style为1(设置了Bold风格),那么 1&0 = 0//结果是0,即取消了Bold风格
    假如oldFont.Style为0,那么 0 & 0 =0, 结果也为0
    也就是说,oldFont.Style & ~FontStyle.Bold的结果恒为0,就是确保取消了Bold风格
    建议楼主看看二进制位运算符的相关知识
      

  3.   

     & ~这个是去掉
    |这个是增加这个样式
      

  4.   


    太感谢yangglemu大哥了!!