我正在寻找创建一个C#应用程序,根据当前具有焦点的应用程序来更改内容.因此,如果用户使用的是Firefox,我的应用就会知道.适用于Chrome,Visual Studio,TweetDeck等.
这是可能的,如果是这样的话 - 我将如何实现它?
我有一种感觉,我要求的很多 - 但值得一试.
提前谢谢了.
有没有办法判断我的应用程序是否处于活动状态,即它的任何窗口都有.IsActive = true?
我正在编写Messenger应用程序,并希望它在任务栏中闪烁,当它处于非活动状态并且新消息到达时.
我正在使用WinForms,在我的窗体上有一个RichTextBox。当我的表单失去焦点但可见时,并且我尝试突出显示/选择文本时,直到表单或文本框本身具有焦点时,它才允许我这样做。
我试过了:
txtInput.MouseDown += (s, e) => { txtInput.Focus(); }
Run Code Online (Sandbox Code Playgroud)
但无济于事,我似乎找不到关于此问题的任何在线信息。
使用记事本之类的其他程序进行测试时,它确实具有所需的行为。
对此有很多问题(一、二、三、四、五),但我尝试了所有这些问题的修复,但它们要么不起作用,要么不适合我的目的。这是我的基本结构:
User Control
|-Panel
|-Picture Box (several of them, created at runtime, do not exist at design time)
Run Code Online (Sandbox Code Playgroud)
因为我认为它是相关的,面板将其停靠栏设置为“填充”并将调整大小设置为“增长和缩小”,因此它始终覆盖整个用户控件。图片框总是覆盖面板的一部分,但通常不是全部(尽管可能)。
我特别在听Ctrl + C,我需要一种方法,无论哪个孩子有焦点,都可以做出回应。我想要一种可以侦听任意按键的方法,以便我稍后对其进行扩展。
链接页面上的一个答案建议为这些按键设置一个全局侦听器,我不想这样做,因为如果它是后台应用程序,我不希望它关闭。另一个建议在顶级表单中检测它并将其过滤到我的用户控件。问题是向下的用户控件被构建为一个 DLL,我不想强制使用它的应用程序必须实现监听Ctrl + C,这是它应该自己处理的事情。
1) 我没有 KeyPreview 属性在我的 UserControl 上设置为 true。关于该问题的第二个答案建议覆盖 ProcessCmdKey,这是我所做的,但无论我尝试什么,都不会调用回调。
2)这个也建议覆盖ProcessCmdKey。正如我所说,它永远不会被调用。
3)我没有接受按钮设置为true。
4)KeyDown和PreviewKeyDown回调都已经实现,都没有被调用。
5) 还建议使用 ProcessCmdKey。
无论焦点如何,如何在用户控制级别检测关键事件?或者,如果我尝试的上述方法应该有效,我错过了哪些设置阻止它工作?
有没有办法使用c#在控制台应用程序中捕获鼠标滚轮事件,就像在GUI/Window应用程序中捕获鼠标滚轮事件一样?
我想这样做只滚动控制台中的部分文本.
我搜索谷歌这个,但我能找到的只是Window应用程序中的鼠标滚轮事件.
有没有一种简单的方法可以做到这一点?或者至少检查控制台当前是否处于焦点状态?
想象一下像游戏这样的东西(这里不是这种情况,但类比成立) - 如果它可以自动暂停,那将会很有用。我需要类似的东西。
c# ×7
.net ×4
winforms ×3
console ×2
events ×1
mousewheel ×1
richtextbox ×1
selection ×1
topmost ×1
wpf ×1