问题如题。
我知道控件是通过判断usermode在设计时不响应事件的但问题是:是谁使控件在设计时能改变大小?调整位置?我的一种想法是,有一个设置可以控制当前是设计模式还是运行模式,如果是这样,如何进行设置,使我的程序在运行时具备设计时的状态?另外一个可能就是,msdn说判断设计模式是通过容器的环境属性提供的,但我制作了自己的容器,也建立了与msdn描述相同的属性,但还是不行,环境属性有另外的建立方法吗?或者有其它模拟这种效果的例子也行,我是想让用户能够通过拖动调整界面布局,像E语言一样,偶急用,谢谢各位大侠了
我知道控件是通过判断usermode在设计时不响应事件的但问题是:是谁使控件在设计时能改变大小?调整位置?我的一种想法是,有一个设置可以控制当前是设计模式还是运行模式,如果是这样,如何进行设置,使我的程序在运行时具备设计时的状态?另外一个可能就是,msdn说判断设计模式是通过容器的环境属性提供的,但我制作了自己的容器,也建立了与msdn描述相同的属性,但还是不行,环境属性有另外的建立方法吗?或者有其它模拟这种效果的例子也行,我是想让用户能够通过拖动调整界面布局,像E语言一样,偶急用,谢谢各位大侠了
Dim bLeftModi As BooleanPrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 And X <= 1 Then
bLeftModi = True
End If
End SubPrivate Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print X, Y, Button
If X <= 1 Then
MousePointer = 5
Else
MousePointer = 0
End If
If bLeftModi = True Then
Command1.Left = Command1.Left + X
Command1.Width = Command1.Width - X
End If
End SubPrivate Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
bLeftModi = False
End Sub
按你的想法,那就不是usercontrol能力所能及了.这样要牵涉到hook了,麻烦呢.
等我高三毕业了,帮你研究:)
在控件的周围放上八个Label。给每个Label的拖动事件(就是MouseDown/Move/Up)写代码。注意,控件内部写的话,会发现没有Top/Left等属性的。这是需要一种技巧。
在控件代码中写入:
Public Referer As Object然后在代码里面(随便那里,越早越好)写:
Set UserControl.Referer=Referer
这样,就可以利用Referer提供的Top/Left/Width/Height了。
UserMode很有可能只提供一个信号,通知控件处于设计状态,不要激发事件。对控件的外观调控应该是自己完成的。
建议使用vb.net,
就有如你所想的东东。
呵呵。