gpt4 book ai didi

c# - 在不激活的情况下与表单交互

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:56 28 4
gpt4 key购买 nike

我正在尝试在我的项目中实现代码完成弹出窗口。窗口派生自Form。它包含两个控件:从 UserControl 派生的自定义列表(它显示带有图标的完成可能性)和一个 VScrollBar。

弹出窗口出现时,它不会从编辑器中窃取焦点(表单的 ShowWithoutActivation 被覆盖以返回 true)并且编辑器会向弹出窗口发送特定的击键,以便用户可以使用键盘与其交互。到目前为止,它就像一个魅力。

问题是,我也想允许用户使用鼠标。但是,当用户单击弹出窗口时,其表单将激活并从编辑器中窃取焦点。我可以通过将焦点返回给编辑器来对此使用react,我什至设置了一个计时器来定期执行此操作,但除了是一个糟糕的解决方案之外,当这种情况发生时,编辑器的标题栏总是闪烁(当弹出窗口是点击)。

有没有什么方法可以在不激活表单的情况下与弹出表单进行交互(使用鼠标)?

ShowWithoutActivation 的文档是这样写的:“如果您的非激活窗口需要使用 UI 控件,您应该考虑使用 ToolStrip 控件,例如 ToolStripDropDown。这些控件是无窗口的,当它们被选中时不会导致窗口激活”这似乎正是我需要的东西,但我想使用自定义控件和滚动条。

显示这两个箭头以切换方法重载的工具提示(从 VS 已知)会出现同样的问题 - 整个表单根本不使用任何控件(仅呈现文本和箭头),但单击时,它不应该激活。这个问题可以概括为“如何创建一个永远不会激活的表单,但允许用户与内部的某些控件进行交互?”。

谢谢。

最佳答案

只需覆盖 onFocus 事件...

public partial class myListBox:ListBox
{
protected override void OnGotFocus(EventArgs e)
{
}
}

关于c# - 在不激活的情况下与表单交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1484192/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com