TextBox.Paste Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит при вставлении текста в элемент управления .
public:
virtual event TextControlPasteEventHandler ^ Paste;
// Register
event_token Paste(TextControlPasteEventHandler const& handler) const;
// Revoke with event_token
void Paste(event_token const* cookie) const;
// Revoke with event_revoker
TextBox::Paste_revoker Paste(auto_revoke_t, TextControlPasteEventHandler const& handler) const;
public event TextControlPasteEventHandler Paste;
function onPaste(eventArgs) { /* Your code */ }
textBox.addEventListener("paste", onPaste);
textBox.removeEventListener("paste", onPaste);
- or -
textBox.onpaste = onPaste;
Public Custom Event Paste As TextControlPasteEventHandler
<TextBox Paste="eventhandler"/>
Тип события
Примеры
В этом примере показано, как обрабатывать событие Paste для замены разрывов строк запятыми при вставке в поле адреса. В противном случае вставка адреса, скопированного из нескольких строк, приведет к потере данных.
<TextBox Header="Address" Paste="AddressTextBox_Paste"/>
private async void AddressTextBox_Paste(object sender, TextControlPasteEventArgs e)
{
TextBox addressBox = sender as TextBox;
if (addressBox != null)
{
// Mark the event as handled first. Otherwise, the
// default paste action will happen, then the custom paste
// action, and the user will see the text box content change.
e.Handled = true;
// Get content from the clipboard.
var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.GetContent();
if (dataPackageView.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.Text))
{
try
{
var text = await dataPackageView.GetTextAsync();
// Remove line breaks from multi-line text and
// replace with comma(,).
string singleLineText = text.Replace("\r\n", ", ");
// Replace any text currently in the text box.
addressBox.Text = singleLineText;
}
catch (Exception)
{
// Ignore or handle exception as needed.
}
}
}
}
В этом примере показано, как обработать событие Paste, чтобы ограничить количество символов, вставляемых в Элемент TextBox. Если длина текста в буфере обмена превышает maxLengthэлемента TextBox, пользователю отображается сообщение. Пользователь может продолжить усечение текста или отменить операцию вставки.
<TextBox Paste="TextBox_Paste" MaxLength="10"/>
private async void TextBox_Paste(object sender, TextControlPasteEventArgs e)
{
TextBox tb = sender as TextBox;
if (tb != null)
{
// Mark the event as handled first. Otherwise, the
// default paste action will happen, then the custom paste
// action, and the user will see the text box content change.
e.Handled = true;
// Get content from the clipboard.
var dataPackageView = Windows.ApplicationModel.DataTransfer.Clipboard.GetContent();
if (dataPackageView.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.Text))
{
try
{
var text = await dataPackageView.GetTextAsync();
if (text.Length > tb.MaxLength)
{
// Pasted text is too long. Show a message to the user.
// Create the message dialog and set its content
var messageDialog =
new Windows.UI.Popups.MessageDialog(
"Pasted text excedes maximum allowed ("
+ tb.MaxLength.ToString() +
" characters). The text will be truncated.");
// Add commands to the message dialog.
messageDialog.Commands.Add(new UICommand("Continue", (command) =>
{
// Truncate the text to be pasted to the MaxLength of the text box.
string truncatedText = text.Substring(0, tb.MaxLength);
tb.Text = truncatedText;
}));
messageDialog.Commands.Add(new UICommand("Cancel", (command) =>
{
// Cancelled. Do nothing.
}));
// Set the command that will be invoked by default.
messageDialog.DefaultCommandIndex = 0;
// Set the command to be invoked when escape is pressed.
messageDialog.CancelCommandIndex = 1;
// Show the message dialog.
await messageDialog.ShowAsync();
}
else
{
tb.Text = text;
}
}
catch (Exception)
{
// Ignore or handle exception as needed.
}
}
}
}
Комментарии
Событие Paste возникает до вставки содержимого в элемент управления . Это событие можно обработать, чтобы проверка содержимое буфера обмена и выполнить любые действия с содержимым перед его вставлением. При выполнении какого-либо действия задайте для свойства Handled аргументов события значение true; в противном случае выполняется действие вставки по умолчанию. Если вы помечаете событие как обработанное, предполагается, что приложение обработало операцию вставки и действие по умолчанию не выполняется. Вы несете ответственность за определение точки вставки и содержимого буфера обмена для вставки, а также за вставку содержимого.
Чтобы выполнить настраиваемое действие вставки, для свойства Handled необходимо задать значение true в обработчике перед кодом. В противном случае выполняется действие вставки по умолчанию, а затем выполняется настраиваемое действие. Пользователь может видеть изменение содержимого в TextBox.