可否控制command1的位置,使之与usercontrol11的位置发生某种关系呢
编号:QA004720
建立日期: 2003年8月15日 最后修改日期:2003年8月15日
所属类别:
Q
译名:
操作系统:win98/me
编程工具:vb6
问题:想在用户控件的设计代码中设置或返回它的left、top属性,可以做到吗?在工程组中usercontrol.move不能用,而标准窗体form1.move却可以,这是为什么呢?可否在用户控件的代码中控制标准窗体form1.command1的位置,使之与 form1.usercontrol11的位置发生某种关系呢?
A回答:
涂海宁的意见:
通过设置UserControl的Left、Top属性来移动控件肯定是可以做到的,但一定要搞清楚控件与窗体之间的关系:窗体可以控制控件,而控件是不能控制窗体的(当然如果你非要操作某个窗体也是可以的),简单的说就是谁拥有谁的问题。
通常我们可以通过窗体本身的或其某个控件的事件来设置或调用UserControl的属性及方法。而在你的问题中与此正好相反,你希望能通过编写UserControl代码来控制窗体上的Form1.Command1的位置,使之与UserControl的位置存在某种关系,这说明你的想法是错的!!!
你应当通过编写你所说的Form1.Command1或Form1的代码来控制UserControl,因为如果你要移动Form1.Command1的位置完全可以在Form1中编写,此时UserControl与Form1.Command1都隶属于Form1,将这种代码移到UserControl中完全没有必要。
通过例程
example.rar你便可以发现,移动UserControl或是Form1.Command1是多么的容易!
(该例程在Win2000 & Vb6下测试成功)
Yd Liu的意见:
我认为你提的问题是这样的,你无法在工程中控制控件的位置,这是正常的,但是如果你想控制他的位置的话,也是可以有一些其他的方法的,比如在控件里去设一个新的方法,或属性,来传递位置参数。这样变通的方法应该是可以实现的。
TerryTan的意见:
在用户控件的设计代码中设置或返回属性需要重新编写属性,如果用户控件的某个属性跟它包含控件的属性相同就可以使俩数据类型相同的属性等同。这可以用用户控件的向导完成。另外不能等同的就自己编写,请查阅MSDN-在控件中添加属性;其次事件和方法都是这样编写的。
林宇的意见:
在控件代码里应该用 usercontrol.extender.move 来实现移动,同样 usercontrol.extender.parent 可以返回父窗体
此问题由涂海宁等回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, ActiveX技术, activex, com, ado。
| |
|
|
| |
|
|