代码之家  ›  专栏  ›  技术社区  ›  Atmocreations

移除用户控件获得焦点的能力

  •  0
  • Atmocreations  · 技术社区  · 15 年前

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

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

    但是,由于我不希望它们实际接收到任何焦点,所以我希望对子对象和用户控件禁用此功能。我简直不敢相信,不管孩子是什么类型,都不可能阻止他们控制自己的注意力。我现在使用图像框和图片框。

    已经用google搜索过了,结果总是在这些条件下属性不能设置为false…

    6 回复  |  直到 12 年前
        1
  •  2
  •   Darrel Miller    15 年前

    如果您将PictureBox放在一个帧中并禁用该帧,则它将不会接收鼠标事件。结合将Tabstop设置为false进行此操作将阻止PictureBox接收焦点。

    我以前使用过这种技术来创建一个复选框用户控件,它可以设置为只读。

        2
  •  1
  •   shahkalpesh    15 年前

    可以将ChildControl的Tabstop属性设置为false。

        3
  •  0
  •   Mike Burton    15 年前

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

        4
  •  0
  •   Beth    15 年前

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

        5
  •  0
  •   AngryHacker    15 年前

    你可能想看看这篇文章。

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

    听起来你有问题。唯一已知的解决方法是将UserControl的Enabled属性设置为false,而不是设置CangetFocus属性。但是,当然,你将无法对点击和事情做出响应。

        6
  •  0
  •   RBarryYoung    15 年前

    已经有一段时间了,但我们多年来使用的解决方案是捕获接收到的焦点事件(抱歉,记不清它是什么),然后明确地将焦点强制到其他东西上。它很笨拙,而且不容易(因为在VB/COM窗口中事件排序和重新排序的变化莫测),但它完成了任务。