1

私はC#/.NETアプリをやっています。基本的にCtrl + C(クリップボードにコピー)を呼び出すボタンをツールバーに作成したいと思います。私は Clipboard クラスを見ましたが、問題は、フォームに複数のテキストボックスがあるため、どのテキストボックスにフォーカスがあるか、テキストが選択されているかどうか、テキストを選択するかどうかなどをスキャンする必要があることです。ワンライナー」ソリューション。

何か案は?

(また、3 つすべてを追加する方法: 切り取り、コピー、貼り付け、同じ条件で、メイン フォームに複数の tekstboxes..)

4

2 に答える 2

1

WinForms を使用している場合、その問題に対する小さな解決策がある可能性があります。

最後に選択した TextBox を保存するオブジェクトを作成します

TextBox lastSelectedTextBox = null;

コンストラクターで、パラメーターを指定して -Method を呼び出すことにより、-Event の各イベントハンドラーを作成しTextBoxます。FormGotFocusAddGotFocusEventHandlerthis.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);
}
于 2013-10-21T16:46:22.577 に答える