Cut/copy/paste
Если поставить shortcut'ы Ctrl-V, Ctrl-X, Ctrl-C на эти кнопки, толку нет, вариант вызова методов Cut/Copy/Paste текущего textbox'а отпадает.
Как вариант, вызывать по нажатию на эти кнопки соответствующие Winapi комманды, то же что и Ctrl-V, Ctrl-X, Ctrl-C делают, но как?
Спасибо
Если поставить shortcut'ы Ctrl-V, Ctrl-X, Ctrl-C на эти кнопки, толку нет, вариант вызова методов Cut/Copy/Paste текущего textbox'а отпадает.
Как вариант, вызывать по нажатию на эти кнопки соответствующие Winapi комманды, то же что и Ctrl-V, Ctrl-X, Ctrl-C делают, но как?
Спасибо
Если я тебя правильно понял... то тебе нужно использовать Clipboard... то есть системный буфер... Сохраняешь в буфер (аналог CTRL+C, Copy) - Clipboard.SetText("Text!!!"), Берешь из него через Clipboard.GetText(). Можно запоминать не только текст, но и звук и хоть что.... Поробнее в MSDN
P.S. Если при использовании Clipboard.GetText() функция возвращает саму себя, т.е. возвращает строку "Clipboard.GetText()", то буфер пуст и забирать оттуда нечего.
Скажи если помог:D
Есть свойство у формы ActiveControl. Почему бы не использовать его?
Если же требуется поймать момент получения фокуса контролом, а из дизайнера всем контролам лениво устанавливать свойство Enter, то можно использовать такой код:
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication5 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
ApplyEnterEvent(this, true, EnterEventHandeler);
}
private static void ApplyEnterEvent(Control control, bool recursive, EventHandler handler) {
control.Enter += handler;
if (recursive) {
foreach (Control child_control in control.Controls)
ApplyEnterEvent(child_control, recursive, handler);
}
}
private void EnterEventHandeler(object sender, EventArgs e) {
if (sender is Control) {
Text = (sender as Control).Text;
}
}
}
}
Ну у меня не просто контролы на форме - главная Wiew, дочерние(mdi), на ней другие вьюхи, а на них уже контролы. Кнопки Клипборда на главной вьюхе.
По событию Enter я передаю текущий контрол в модель (откуда доступны кнопки), если этот контрол приводится к TextEdit, и null в остальных случаях. Комманды клипборда работают, но другой вопрос - как менять кнопкам состояние? К примеру, по выделению текста должны активироваться cut и copy и т.д.
KeyUp - в случае выделения текста комбинацией Ctrl+A, или Shift+клавиши курсора.
MouseUp - выделение мышкой.
Paint - в случае вызова контекстного меню (и выбора Cut или Select All)
Через задницу, но работает.
Так же можно отследить как и я говорил через clipboard... Но не всегда.
Единственный вопрос остается: где делать проверку cancopy, canpaste...
В обработчике этих всех событий я и проверяю CanCopy, CanPaste...
Вывод - используйте RichTextBox'ы на форме, а TextBox'ы - в диалоговых окнах