Necesito "modificar" todo pegado en el texto del TextBox para que se muestre de alguna manera estructurada. Puedo hacerlo con drag-n-drop, ctrl-v, pero ¿cómo hacerlo con el menú de contexto predeterminado "Pegar"?enganchar por defecto el evento "Pegar" del control WinForms TextBox
7
A
Respuesta
16
Mientras que yo no sugeriría normalmente cayendo a bajo nivel API de Windows, y esto puede no ser la única manera de hacer esto, que sí hace el truco:
using System;
using System.Windows.Forms;
public class ClipboardEventArgs : EventArgs
{
public string ClipboardText { get; set; }
public ClipboardEventArgs(string clipboardText)
{
ClipboardText = clipboardText;
}
}
class MyTextBox : TextBox
{
public event EventHandler<ClipboardEventArgs> Pasted;
private const int WM_PASTE = 0x0302;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_PASTE)
{
var evt = Pasted;
if (evt != null)
{
evt(this, new ClipboardEventArgs(Clipboard.GetText()));
// don't let the base control handle the event again
return;
}
}
base.WndProc(ref m);
}
}
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var tb = new MyTextBox();
tb.Pasted += (sender, args) => MessageBox.Show("Pasted: " + args.ClipboardText);
var form = new Form();
form.Controls.Add(tb);
Application.Run(form);
}
}
En definitiva, la WinForms guía no es muy bueno . Es una envoltura delgada sobre Win32 y los controles comunes. Expone el 80% de la API que es más útil. El otro 20% a menudo falta o no está expuesto de una manera que es obvia. Sugeriría alejarse de WinForms y de WPF si es posible, ya que WPF parece ser un mejor marco de arquitectura para .NET GUI.
Cuestiones relacionadas
- 1. Evento de WinForms para el foco de TextBox?
- 2. Custom Caret para WinForms TextBox
- 3. C# WinForms Alineación vertical para TextBox, etc.
- 4. Watermark TextBox en WinForms
- 5. WinForms: El evento TextBox Leave no se activa después de ir al menú principal
- 6. Evento ASP.NET TextBox LostFocus
- 7. Al modificar un control TextBox en el evento Leave se excluye el control
- 8. Winforms, databinding, Listbox y textbox
- 9. ASP.Net textbox onblur evento
- 10. Autoresize textbox control verticalmente
- 11. Pegar evento en Javascript
- 12. Determinar línea lógica del índice de carga (Winforms TextBox)
- 13. AutoComplete TextBox Control
- 14. cómo detectar el evento pegar en excel
- 15. Ciclo de vida del evento WinForms
- 16. WinForms - acción después del evento de cambio de tamaño
- 17. Crear hipervínculo en el control TextBox
- 18. Para enganchar o no para enganchar - git
- 19. ¿Cómo desencadenar un UpdatePanel por un control TextBox?
- 20. ¿Por qué el evento Winforms Click es más lento que el evento MouseClick?
- 21. Winforms C# - Establecer el foco en el primer control secundario de TabPage
- 22. Cómo establecer el orden Z de un control usando WinForms
- 23. .NET WinForms ComboBox, elementos idénticos y el evento SelectedIndexChanged
- 24. ¿Es posible enganchar objetos recolectados por GC?
- 25. El evento de clic de control del usuario no funciona al hacer clic en el texto dentro del control?
- 26. ¿Por qué pegar evento en jquery se desencadena en pre-pegar?
- 27. ¿Falta el evento "KeyPress" para WinForms?
- 28. desencadenar un evento "pegar" en Javascript
- 29. Llevar el control Winforms al frente
- 30. Eliminar el corte, copiar y pegar por defecto de UIMenuController en un TableView
gracias, acabo de aprender algo nuevo (no solo cómo atrapar "pegar", nuez una manera de hacer cosas) – David
palabra clave de evento falta en la declaración de campo pegado y ¿por qué está usando una variable local evt? – Maxence
@Maxence, FTFY. – dahvyd