我原本试图让我的程序获得箭头键的输入(向上,向下,向左和向右),但发现在KeyDown()中,这些键永远不会发生.之后我发现我可以通过进入PreviewKeyDown()函数并设置来启用箭头键:
e.IsInputKey = true;
Run Code Online (Sandbox Code Playgroud)
无论周围的条件和逻辑.麻烦的是当我写这个函数时:
private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{ /*whatever logic goes here*/}
Run Code Online (Sandbox Code Playgroud)
它从未被解雇; 我甚至设置了一个断点,可以在函数内部触发来确定.另外,我试过:
this.Focus()
Run Code Online (Sandbox Code Playgroud)
在构造函数中,以确保主窗体具有焦点,但它没有任何区别.唯一有效的方法是将焦点设置为我创建的Button,并且该按钮还通过调用上面的Form1_PreviewKeyDown()触发PreviewKeyDown事件.
所以在这一点上我有一个工作方法,但任何人都可以帮助我理解为什么它从未被解雇过?我假设由于某种原因,Form的PreviewKeyEvent永远不会触发,但我真的不知道为什么.
我正在为朋友制作一个Winforms程序,他想要实现的功能之一是隐藏文本框的内容不被记录;这意味着他希望它免受屏幕截图和屏幕录制的影响。
在这一点上,我试图解释这是徒劳的,解释说
在回答屏幕截图的问题时,他说虽然我们不能让程序完美,但我们可以尽可能地让别人“破解”它变得困难。(个人观点认为他是对的,但我认为我们不应该为这样一个简单的解决方法而过火)
然而,他对存在大量不同录音程序的问题的回答有点有趣,但我不知道足以让他有信心地回答。他的理论是所有程序中都必须有一些共同的动作,因为在某种程度上,它们都抓取了显示在屏幕上的数据副本以供使用,而且我们理论上应该能够检测到该行动并作出相应的反应。
所以我的问题是这样的:有没有人知道记录屏幕的程序是否有一个共同的动作,如果有一个共同的动作,它是什么?