首页 > 解决方案 > 您如何允许 vb.net 基本 winforms 控件检测控件外部的单击

问题描述

我如何知道何时单击离开控件?当用户单击它时,我可以对控件做很多事情,但我不知道如何检测用户不再“使用”该对象。当用户在我的应用程序内置的自定义文本对象之外单击时,我只想打开/关闭事件和/或更新某些属性。

故事:我在运行时动态地将自定义文本对象控件添加到表单中。我已经使用“AddHandler”将一些事件编码到自定义文本控件中。我添加到对象中然后在运行时可用的事件是:

鼠标移动

鼠标按下

鼠标双击

这些都很好,因为我可以使用这些事件来确定正在单击的文本控件,因此使用这些事件收集的信息然后将控件移动到窗体上的任何位置。

为了“编辑”文本框的文本,用户双击文本框。我需要这样做,因为我需要关闭 MouseMove 事件,以便用户可以在文本框中键入并在文本框中突出显示/复制/粘贴文本。所有这一切都很好。

我现在遇到的问题是将 MouseMove 事件重新打开。所以说用户已经在文本控件中输入了文本。我需要知道用户何时在控件外部单击,以便我可以重新激活 MouseMove 事件,然后更新文本控件的其他属性,例如背景颜色、只读等...基本上此功能使用户可以访问编辑或移动对象又名editMode。

我的第一次尝试是使用 txtCtrl.LostFocus() 事件,但这并不总是能捕捉到,并且会迫使我必须为应用程序中的每个其他控件编写一个 Focus() 方法,以强制关注另一个对象然后是用户当前正在与之交互的自定义​​文本控件。

我如何使用除焦点方法/事件之外的任何事件来完成此操作。是否有其他选项/功能可以做我想象的应该是可能的?

示例截图骨架表格: 在此处输入图像描述

标签: vb.netwinformsvisual-studio-2015event-handling

解决方案


推荐阅读