簡體   English   中英

將文本復制到剪貼板

[英]Copy text to Clipboard

我在做C#/ .NET應用程序。 我想在工具欄上創建一個按鈕,它基本上會調用Ctrl + C(復制到剪貼板)。 我看了Clipboard類,但問題是因為我在表單上有多個文本框,我需要掃描哪一個有焦點,如果/是選中文本,以便從中選擇文本等,所以我認為必須有我“單線“解決方案。

有任何想法嗎?

(另外,如何在相同的條件下添加所有3:剪切,復制,粘貼到工具欄 - 主窗體上的多個tekstbox ..)

編輯 :如果是Winforms ..

將它放在你的調用函數中:

Clipboard.SetText(ActiveControl.Text);

正如Daniel Abou Chleih所述:如果你必須與控件交互以調用該函數,焦點將被更改為該控件。 這僅在您通過其他方式調用時才有效。

編輯 :不是單行,但適用於最后一個活動的TextBox:

private Control lastInputControl { get; set; }
protected override void WndProc(ref Message m)
{
    // WM_SETFOCUS fired.
    if (m.Msg == 0x0007)
    {
        if (ActiveControl is TextBox)
        {
            lastInputControl = ActiveControl;
        }
    }

    // Process the message so that ActiveControl might change.
    base.WndProc(ref m);

    if (ActiveControl is TextBox && lastInputControl != ActiveControl)
    {
        lastInputControl = ActiveControl;
    }
}

public void CopyActiveText()
{
        if (lastInputControl == null) return;
        Clipboard.SetText(lastInputControl.Text);
}

現在,您可以調用CopyActiveText()來獲取最近失去焦點或當前具有焦點的最新TextBox。

如果你使用WinForms我可能有一個小問題的解決方案。

創建一個Object來存儲上次選擇的TextBox

TextBox lastSelectedTextBox = null;

在構造函數中,通過使用參數this.Controls調用AddGotFocusEventHandler -Method,為Form中的每個TextBoxGotFocus -Event創建一個Eventhandler。

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM