如果我想创建一个具有多种样式组合的字体,例如粗体和下划线,我必须放置'或'它之间的陈述,如下例所示:
fail
如果你加粗'和'强调,它不会起作用,你只能获得2中的1个(就像或者声明应该如何工作),而这将是逻辑上的方法。这背后的原因是什么?
答案 0 :(得分:1)
试试这个:
lblArt.Font = New Drawing.Font("Tahoma", _
18, _
FontStyle.Bold or FontStyle.Italic)
使用“New Drawing.Font”代替单独的Font Source
答案 1 :(得分:1)
布尔逻辑的工作方式与我们在英语中使用这些术语的方式略有不同。这里发生的是枚举的FontStyle
值实际上是位标志,为了操作位标志,你使用bitwise operations。
要组合两个位标志,你可以将它们组合在一起。 OR运算组合了这两个值。因此,假设FontStyle.Bold
为2,FontStyle.Underline
为4.当你将它们组合在一起时,你得到6 - 你把它们组合在一起。在布尔逻辑中,如果两个操作数中的位 ,则可以将OR运算视为返回“true”(即,在结果中设置该位)如果两个操作数中的位都没有设置,则设置为“false”。
您可以为此类操作编写真值表,如下所示:
| A | B | A OR B |
|---|---|--------|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
请注意,结果更接近于我们用非正式英语称之为“和”的内容。如果其中任何一个设置了,那么结果也设置了它。
与OR相反,按位AND操作仅返回“true”(即,在结果中设置该位),如果两个操作数中的两个已设定。否则,结果为“false”。同样,可以写一个真值表:
| A | B | A AND B |
|---|---|---------|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
再次假设FontStyle.Bold
的值为2且FontStyle.Underline
的值为4,如果你和它们在一起,则得到0.这是因为这些值有效地相互抵消了。最终结果是你没有得到任何字体样式 - 正是在你写FontStyle.Bold And FontStyle.Underline
时它无法正常工作的原因。
在VB中,使用Or
运算符执行按位OR运算。 And
运算符执行按位AND运算。因此,为了按比例包含值,这是组合位标志的方法,您可以使用Or
运算符。