首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

通过鼠标在两个图片框之间画线,该如何解决

2012-01-22 
通过鼠标在两个图片框之间画线我现在做一个电路模拟软件,现在在电器元件的两旁分别设置一个图片框,上面就

通过鼠标在两个图片框之间画线
我现在做一个电路模拟软件,现在在电器元件的两旁分别设置一个图片框,上面就画了一个小圆点(半径70twip)。现在想要实现:
当用户在其中一个图片框上按下鼠标并开始拖到另一个图片框上松开鼠标时,就把这两个图片框用线连接起来,最后看用户的连接是否正确。
对于在一个窗体上按下鼠标开始画线,直到松开鼠标,可以实现。但是下面的代码就不能画,原因是什么?该怎么修改?
其中picCir是图片框数组,beginL是表示开始画线的逻辑变量。
Private   Sub   Form_MouseMove(Button   As   Integer,   Shift   As   Integer,   X   As   Single,   Y   As   Single)
        If   beginL   =   True   Then
                DrawWidth   =   2
                Form1.Line   (CurrentX,   CurrentY)-(X,   Y),   vbBlack
        End   If
End   Sub

Private   Sub   picCir_MouseDown(Index   As   Integer,   Button   As   Integer,   Shift   As   Integer,   X   As   Single,   Y   As   Single)
        If   Button   =   1   Then
                beginL   =   True
                Form1.CurrentX   =   picCir(Index).Left
                Form1.CurrentY   =   picCir(Index).Top
        End   If
End   Sub


Private   Sub   picCir_MouseUp(Index   As   Integer,   Button   As   Integer,   Shift   As   Integer,   X   As   Single,   Y   As   Single)
        If   Button   =   1   Then
                beginL   =   False
        End   If

End   Sub

[解决办法]
当然不行,鼠标按下后,直到松开,这段时间里没有发生焦点转移,也就是当鼠标松开时,接收鼠标up事件的依然是你按下时的那个控件。

你可以考虑在按下的那个控件里写up事件处理程序,但是取得的x,y需要换算
[解决办法]
index不同
而且你也想得到嘛,根本就是两个控件,怎么可能是一样的?两个人都叫张三,身份证号码不同,你觉得那是同一个人吗?windows事件的传递,不是根据名字来的,名字只不过是编程时方便记忆的符号,两个对象就有两个对象的id,虽然看上去名字相同,不过是vb做了处理,其实是不同的。

热点排行