这里的((e.State&DrawItemState.Selected)是什么意思???屏蔽掉其他状态位

解决方案 »

  1.   

    表示鼠标的状态是已经选定的!
    switch简洁吗?
      

  2.   

    但是我就用e.State==DrawItemState.Selected
    是不可以的!!!
    为什么一定要加上&DrawItemState.Selected????
    尤其是是" & "!
    这是干什么的!
      

  3.   

    &,按位的and,
    比如二进制的10010111 & 00010101 = 00010101因为一个按钮的state可以selected的同时,又有foucs,所以
    可能的state为e.state=DrawItemState.Selected | DrawItemState.Foucs...
    ,这样,做一个&, 就把Focus和其它状态给过滤掉了,只剩下Selected.
    详细一点,假设slected为0X00000001,
                 focus为0X000000010,
             这样e.state=selected | focus= 0x00000011
             所以,e.state != selected,
             而,e.state&selected= 0x00000001 ==selected 你可以顺便查查sdk上把DrawItemState的几个状态值分别是多少呵呵。