Condividi tramite


TextBox.Paste Evento

Definizione

Si verifica quando il testo viene incollato nel controllo .

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"/>

Tipo evento

Esempio

In questo esempio viene illustrato come gestire l'evento Paste per sostituire le interruzioni di riga con virgole quando si incolla in un campo indirizzo. In caso contrario, incollare un indirizzo copiato da più righe causerebbe la perdita di dati.

<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.
            }
        }
    }
}

In questo esempio viene illustrato come gestire l'evento Paste per limitare il numero di caratteri incollati in TextBox. Se la lunghezza del testo negli Appunti supera il valore maxLength del controllo TextBox, all'utente viene visualizzato un messaggio. L'utente può continuare con il testo troncato o annullare l'operazione incolla.

<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.
            }
        }
    }
}

Commenti

L'evento Paste si verifica prima dell'inserimento di contenuto nel controllo . È possibile gestire questo evento per controllare il contenuto degli Appunti ed eseguire qualsiasi azione sul contenuto prima dell'inserimento. Se si esegue un'azione, impostare la proprietà Handled degli argomenti dell'evento su true; in caso contrario, viene eseguita l'azione incolla predefinita. Se si contrassegna l'evento come gestito, si presuppone che l'app abbia gestito l'operazione incolla e non venga eseguita alcuna azione predefinita. L'utente è responsabile della determinazione del contenuto del punto di inserimento e degli Appunti da inserire e di inserire il contenuto.

È necessario impostare la proprietà Handled su true nel gestore prima del codice per eseguire un'azione incolla personalizzata. In caso contrario, viene eseguita l'azione incolla predefinita e quindi viene eseguita l'azione personalizzata. L'utente può visualizzare il contenuto che cambia in TextBox.

Si applica a