找到当前在WinForms中接收用户(键盘)输入的控件的首选/最简单方法是什么?
到目前为止,我已经提出以下建议:
public static Control FindFocusedControl(Control control)
{
var container = control as ContainerControl;
return (null != container
? FindFocusedControl(container.ActiveControl)
: control);
}
Run Code Online (Sandbox Code Playgroud)
从表单中,可以简单地称为(在.NET 3.5+中甚至可以将其定义为表单上的扩展方法) -
var focused = FindFocusedControl(this);
Run Code Online (Sandbox Code Playgroud)
这个合适吗?
是否有我应该使用的内置方法?
请注意,使用层次结构时,单次调用ActiveControl是不够的.想像:
Form
TableLayoutPanel
FlowLayoutPanel
TextBox (focused)
Run Code Online (Sandbox Code Playgroud)
(formInstance).ActiveControl将返回对TableLayoutPanel的引用,而不是TextBox(因为ActiveControl似乎只是在控制树中返回直接活动的子节点,而我正在寻找叶子控件).
我们如何使用C#模拟CTRL+ V键(粘贴)?
我有一个没有访问ID的文本框,例如textbox1.Text = someValue在这里不起作用.
我想通过点击来填充该文本框(来自剪贴板).由于某些原因,我们确实需要模拟CTRL+ V,这意味着我们不能使用像inputsmulator这样的外部库.