日期:2014-05-17  浏览次数:21355 次

ListView触发MouseUp事件时机让人崩溃了
我希望在ListView的MouseUp事件中写点东西,按理说,直接在MouseUp事件里面写就可以了,但奇怪的是,如果鼠标在ListItem文字上按下鼠标,稍等,再松开,正常,先产生mousedown,再产生MouseUp事件,但如果在文字区域以外单击时,MouseDown的同时,立马触发了MouseUp事件,而我鼠标还按着呢.
试验:
1.在窗体上放一个ListView控件和Label控件,设置ListView控件的View为Detail,并添加一列,宽度适当宽一些
2.启动时,添加一些Item:
        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 300; i++)
            {
                listView1.Items.Add("ListViewItem:" + i.ToString());
            }
        }
3.响应MouseUp事件:

        private int m_Counter = 0;
        private void listView1_MouseUp(object sender, MouseEventArgs e)
        {

            m_Counter++;
            label1.Text = m_Counter.ToString();
        }
可以清楚看见,当鼠标在每个Item文字上按下,稍等再松开时,松开的瞬间,计数器+1,而在文字以外时,按下去,计数器马上+1,松开时,根本不再触发,悲催吧?
谁能帮忙解决一下?
下面是效果图,红色椭圆表示列宽的位置,在两个蓝色椭圆位置按下鼠标,稍等再松开,触发MouseUp事件时机不一样

ListView MouseUp

------解决方案--------------------
不是可以再判断一次当前鼠标的状态啊,你可以在执行你的代码前在加个鼠标状态的判断,确定鼠标属于弹起的状态才执行代码
------解决方案--------------------
我试了没出现你的问题 0.0
------解决方案--------------------
检查一下sender吧