我在做C#/ .NET應用程序。我想在工具欄上創建一個基本上會調用Ctrl + C(複製到剪貼板)的按鈕。我期待剪貼板類,但問題是,因爲我在窗體上有多個文本框,我需要掃描哪一個有焦點,如果/選擇文本,以便從中選擇文本等,所以我認爲必須有「單線「解決方案。將文本複製到剪貼板
任何想法?
(另外,如何添加所有3:剪切,複製,粘貼到工具欄,在主窗體上相同的條件 - 多tekstboxes ..)
我在做C#/ .NET應用程序。我想在工具欄上創建一個基本上會調用Ctrl + C(複製到剪貼板)的按鈕。我期待剪貼板類,但問題是,因爲我在窗體上有多個文本框,我需要掃描哪一個有焦點,如果/選擇文本,以便從中選擇文本等,所以我認爲必須有「單線「解決方案。將文本複製到剪貼板
任何想法?
(另外,如何添加所有3:剪切,複製,粘貼到工具欄,在主窗體上相同的條件 - 多tekstboxes ..)
編輯:如果的WinForms ..
將此放在您的調用函數:
Clipboard.SetText(ActiveControl.Text);
正如丹尼爾·安博Chleih提到如下:如果你有一個控制交互調用函數的焦點 將改成可控制。這隻有通過其他方式調用纔有效。
編輯: 不是一個襯墊,但工程上的最後一個活動的文本框:
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()來獲取失去焦點最後最新的文本框或當前具有焦點。
但是,當他點擊按鈕時,文本框失去焦點。或者我錯了? –
你說得對。激活的控件在觸發點擊事件之前發生更改。 – Measuring
如果您使用WinForms我可能有一個小問題的解決方案。
創建一個對象通過調用AddGotFocusEventHandler
- 方法與參數this.Controls
來存儲你最後選定的文本框
TextBox lastSelectedTextBox = null;
在構造函數中的每個Form
爲TextBox
的GotFocus
- 活動創建一個事件處理程序。
public void AddGotFocusEventHandler(Control.ControlCollection controls)
{
foreach (Control ctrl in controls)
{
if(ctrl is TextBox)
ctrl.GotFocus += ctrl_GotFocus;
AddGotFocusEventHandler(ctrl.Controls);
}
}
,並設置lastSelectedTextBox
到您當前選擇的文本框
void c_GotFocus(object sender, EventArgs e)
{
TextBox selectedTextBox = (TextBox)sender;
lastSelectedTextBox = selectedTextBox;
}
在點擊事件處理程序的按鈕,檢查是否selectedText是零和複製文本到剪貼板:
private void Button_Click(object sender, EventArgs e)
{
if(String.IsNullOrWhiteSpace(lastSelectedTextBox.SelectedText))
Clipboard.SetText(lastSelectedTextBox.Text);
else
Clipboard.SetText(lastSelectedTextBox.SelectedText);
}
this.Controls將只返回窗體上的控件。不是它的子控制。 – Measuring
現在你找到了我;) –
的Windows形式?還是WPF? –
請注意,如果您有按鈕,它將從文本框取消焦點...根據您的需要,可能會更方便用戶將某個/每個文本框與「複製到剪貼板」按鈕相關聯。 –
基本上,他必須保存最後聚焦的'TextBox'並在單擊Button時複製其文本 –