コントロールコレクションの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();
}