WinForms を使用している場合、その問題に対する小さな解決策がある可能性があります。
最後に選択した TextBox を保存するオブジェクトを作成します
TextBox lastSelectedTextBox = null;
コンストラクターで、パラメーターを指定して -Method を呼び出すことにより、-Event の各イベントハンドラーを作成しTextBox
ます。Form
GotFocus
AddGotFocusEventHandler
this.Controls
public void AddGotFocusEventHandler(Control.ControlCollection controls)
{
foreach (Control ctrl in controls)
{
if(ctrl is TextBox)
ctrl.GotFocus += ctrl_GotFocus;
AddGotFocusEventHandler(ctrl.Controls);
}
}
そしてlastSelectedTextBox
、現在選択されている TextBox に設定します
void c_GotFocus(object sender, EventArgs e)
{
TextBox selectedTextBox = (TextBox)sender;
lastSelectedTextBox = selectedTextBox;
}
ボタンの Click-EventHandler で、selectedText が null かどうかを確認し、テキストをクリップボードにコピーします。
private void Button_Click(object sender, EventArgs e)
{
if(String.IsNullOrWhiteSpace(lastSelectedTextBox.SelectedText))
Clipboard.SetText(lastSelectedTextBox.Text);
else
Clipboard.SetText(lastSelectedTextBox.SelectedText);
}