none
请问一个Button按钮的问题 RRS feed

  • 问题

  • 请问我重绘Button,当Button.Enabled = false的时候,有需求需要通过一个状态,判断鼠标移到按钮上可以显示不同的背景。

    但时,当Enabled=false的时候,不会触发MouseEnter,MouseMove等事件,请问这种情况下如何判断鼠标是否移动到Button之上,谢谢

    2010年4月18日 12:52

全部回复

  • 自己实现一个button的enabled方法

    =false的时候不出发任何非鼠标事件,后面就简单了。。。

     


    family as water
    2010年4月19日 1:46
  • 难点是怎么控件不发生任何非鼠标事件。
    2010年4月19日 5:39
  • 难点是怎么控件不发生任何非鼠标事件。


    你可以使用windows API

     DllImport("user32.dll")

    中鼠标相关函数,来控制鼠标的当前坐标,并判断当前的坐标是否为button的坐标,然后进行操作,这样的话应该可以防止将“非鼠标事件”误作为“鼠标事件”了。这种方法我并未试过。

    而在C#中,同样提供了Control.MousePosition Property用来获得当前的鼠标位置。具体参见:

    http://msdn.microsoft.com/en-us/library/30b3ys2b(vs.71).aspx

    2010年4月19日 9:35
  • 你好!

    如果不是特殊需要,建议还是保持原样。


    知识改变命运,奋斗成就人生!
    2010年4月20日 1:50
    版主
  • 就是有这个特殊需要。我也想Button保持原样。就想在enabled=false的时候获取到鼠标移上去的事件。
    2010年4月20日 3:18
  • 可以通过窗体的MouseMove事件来判断鼠标是否在Button上
    共同努力,共同提高
    kaedei#live.cn My BLOG
    2010年4月20日 15:33
  • 窗体的Mose如何判断?以位置的Location与鼠标的当前位置判断? 如果我的按钮在TabControl中怎么办?

    是不是我每一个窗口都要争对不同的按钮来写这个代码呢?是否重复工作量太多呢?

    2010年4月20日 15:44
  • 你好!

         我明白你的意思,你是想把实现的逻辑封装在按钮中,但是你需要触发机制,按钮的一旦把Enabled设置为false就无法接收消息了!


    周雪峰
    2010年4月25日 8:45
    版主
  • 谢谢,,是这样子的,请问能解决吗?
    2010年4月25日 12:19