删除Usercontrol获取焦点的能力

时间:2009-09-04 20:40:18

标签: user-controls vb6 focus activex

在设计我的用户控件时,我遇到了以下问题:

我想将UserControl.CanGetFocus设置为false,这是不可能的,因为错误消息告诉我无法获得焦点的控件不能包含能够获得焦点的元素。

但由于我不希望它们实际上获得任何焦点,我想为子对象以及我的用户控件禁用它。我几乎无法相信,无论它们是什么类型,都无法阻止儿童控制器获得焦点?我目前使用图像框和图片框。

已经使用谷歌搜索过,总是导致在这些条件下属性无法设置为false的结果......

6 个答案:

答案 0 :(得分:2)

如果您将图片框放在一个框架中并禁用该框架,那么它将不会接收鼠标事件。将tabstop设置为false可以防止图片框获得焦点。

我过去曾使用过这种技术来创建一个可以只读的复选框usercontrol。

答案 1 :(得分:1)

您可以将childcontrol的TabStop属性设置为False。

答案 2 :(得分:0)

您是否尝试过使用Image控件?如果我没记错的话,它们是轻量级的,不应该捕获焦点,而PictureBox总是能够(理论上)捕获焦点。根据您的需要,这可能就足够了。

答案 3 :(得分:0)

您可以将启用的属性设置为false吗?

答案 4 :(得分:0)

您可能想看看这篇文章。

http://support.microsoft.com/kb/180216

听起来你有问题。唯一已知的解决方法是将UserControl的Enabled属性设置为False,而不是设置CanGetFocus属性。但是,当然,你无法回应点击和事物。

答案 5 :(得分:0)

已经有一段时间了,但我们多年来使用的解决方案是捕捉收到的焦点事件(对不起,不记得它是什么),然后明确强迫其他事情。它很笨拙,并不容易(因为VB / Com Windows中事件排序和重新排序的变化),但它完成了工作。