Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'---------------------------拖动窗体------------------------
    If Button = 1 Then
           Me.Left = Me.Left + X - X1: Me.Top = Me.Top + Y - Y1
    End IfEnd Sub
我向实现的功能:窗口为正常状态时可以被拖动。可是到托盘后再也不回来了

解决方案 »

  1.   

    标准的WINDOWS窗口不是都可以拖动的?还用写代码吗,,,如果是缩到右下角,你得加个“还原”的命令或象千千静听那样单击一下就恢复状态吧
      

  2.   

    你知道托盘是怎么一回事吗?
    估计你就是找了个代码用一下,根本就没仔细看他到底怎么回事。
    其实不是程序缩小到托盘,而是程序通过API函数向系统盒(托盘)申请了一块地方,并可放图标。
    然后可以用钩子(Hook技术)来接在系统盒中那块地方所收到的消息(包括鼠标在上面的消息),
    然后根据消息来执行你订制的过程。这时,你程序的窗口不是缩到那,通常是自己隐藏的,
    你的窗口根本就和系统盒的那个图标区域是两个东西,所以在系统盒弄鼠标你的窗口不会产生
    MouseMove事件的,如果你用的是Microsoft的托盘范例(ActiveX做的),那么那就是个控件,
    那个控件中有事件的,你要处理系统盒中的事件,就必须在系统盒控件的事件中处理。
      

  3.   

    看看这个:
    http://download.csdn.net/source/795601
    附源码,解决你的问题
      

  4.   

    我补充清楚,便于有同样问题的同志1. 我用的不是标准窗体,而是把窗体的BorderStyle=0  所以要拖动无标题栏的窗体需用到一些代码
    2. 如果不加入那行用于移动窗体的代码,鼠标在托盘里移动图标就能触发MouseMove事件——这是我的疑惑所在在这里搜到了解决方法(http://topic.csdn.net/u/20070622/18/a401d0c5-cbe6-4f03-a8d8-8e363f596cdb.html
    高手 chenhui530 提供了解决之道:
    说明:就是一般来说,托盘的图标用的是窗体的Icon属性的图标,这时如果在图标上触发MouseMove事件,实际上就是在窗体上触发了MouseMove,即Form_MouseMove,而这个会跟那行移动窗体的代码相冲突,所以把恢复窗体的代码放到picturebox_MouseMove上来就不会了。
    我的理解是这样的,表述很菜,莫见笑谢谢chenhui530,也谢谢大家的关注。
    就把分分给大家吧