您可以尝试测试控件集合的 Focused 属性
foreach (Control z in this.Controls)
{
if (z is TextBox && z.Focused)
((TextBox)(z)).Paste();
}
但是,如果 TextBox 包含在不同的 GroupBox 或其他控件容器中,这可能会变得更加复杂。
在这种情况下,您需要一个递归函数
private void PasteInFocusedTextBox(ControlCollection ctrls)
{
foreach (Control z in ctrls)
{
if(z.Controls != null && z.Controls.Count > 1)
PasteInFocusedTextBox(z.Controls);
if (z is TextBox && z.Focused)
((TextBox)(z)).Paste();
}
}
编辑:重读你的问题我有疑问。如果单击按钮执行粘贴操作,则焦点将切换到该按钮,您不能再使用focused属性
在这种情况下,您需要在单击命令按钮之前将最后一个具有焦点的文本框保存在全局变量中
private TextBox _txtLastFocused = null
private void txtCommon_Leave(object sender, EventArgs e)
{
_txtLastFocused = (TextBox)sender;
}
private void cmdPasteButton_Click(object sender, EventArgs e)
{
if(_txtLastFocused != null) _txtLastFocused.Paste();
}