Run*_*CMD 4 .net c# listview bit-manipulation
在标准的MSN代码中,ListView上有一行 - Ownerdraw - DrawItem:
if ((e.State & ListViewItemStates.Selected) != 0)
{
//Draw the selected background
}
Run Code Online (Sandbox Code Playgroud)
显然它对状态进行了逐点比较?为什么按位?以下不起作用:
if (e.State == ListViewItemStates.Selected)
{
//Doesn't work ??
}
Run Code Online (Sandbox Code Playgroud)
为什么这种比较不起作用?它只是一个标准的枚举?我有点困惑..
它不是一个标准的枚举 - 它用它装饰FlagsAttribute,使它成为一个位掩码.有关详细信息,请参阅MSDN FlagsAttribute.
第一个示例检查是否设置了任何标志,正如您正确解释的那样.标志通常使用|组合 运算符(虽然+和^对于没有重叠的正确指定的属性也是安全的).
| 归档时间: |
|
| 查看次数: |
890 次 |
| 最近记录: |