J'ai besoin de "modifier" tout le texte collé dans TextBox pour être affiché de manière structurée. Je peux le faire avec drag-n-drop, ctrl-v, mais comment le faire avec le menu contextuel "Coller"?crochet sur l'événement "Coller" par défaut du contrôle WinForms TextBox
7
A
Répondre
16
Bien que je normalement suggère de ne pas tomber à bas niveau API Windows, et cela ne peut pas être la seule façon de le faire, il fait le tour:
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 fin de compte la boîte à outils WinForms est pas très bon . C'est un wrapper thin-ish autour de Win32 et les contrôles communs. Il expose les 80% de l'API qui est le plus utile. Les 20% restants sont souvent manquants ou non exposés d'une manière évidente. Je suggère de s'éloigner de WinForms et de WPF si possible car WPF semble être un meilleur cadre architecturé pour les interfaces graphiques .NET.
Questions connexes
- 1. Intercepter un événement Coller sur HtmlEditor WinForms
- 2. Extension WinForms TextBox
- 3. C# WinForms Alignement vertical pour TextBox, etc
- 4. Comment simuler coller dans un TextBox WPF?
- 5. Winforms valeurs par défaut DataGrid
- 6. Caret personnalisé pour WinForms TextBox
- 7. Redéfinition du comportement des touches par défaut dans un TextBox
- 8. Ajouter un élément au menu contextuel TextBox par défaut
- 9. Avec JS ajouter la date par défaut sur TextBox
- 10. C# et Winforms Contrôle TextBox: Comment modifier le texte?
- 11. Jsf valeur par défaut de textbox
- 12. Imprimer WinForms TextBox avec tabulation
- 13. Doctrine sur le crochet construit par requête
- 14. Impression À partir du contrôle WebBrowser imprime sur l'imprimante incorrecte après le réglage par défaut
- 15. Je ne peux pas trouver mon je crée un contrôle WinForms personnalisé TextBox contrôle TextBox personnalisé dans Visual Studio
- 16. Comment récupérer les modèles par défaut du contrôle WPF 4.0?
- 17. Informations sur les constantes du crochet
- 18. Silverlight 3 - Contrôle sur l'habillage dans TextBox
- 19. Menu contextuel par défaut pour RichTextEdit?
- 20. C#: fuseau horaire par défaut du contrôle DateTimePicker
- 21. Détection des propriétés par défaut du contrôle ActiveX
- 22. Modification des couleurs par défaut du contrôle de graphique WPFToolkit
- 23. Comment mettre un contrôle WinForms sur de longues ToolBox
- 24. Boutons de saisie semi-automatique et par défaut de TextBox
- 25. Comment définir la valeur par défaut de Couleurs dans un contrôle personnalisé dans Winforms?
- 26. Propriété de contrôle héritée .Net Par défaut
- 27. Modifier un contrôle TextBox sur l'événement Leave empêche la tabulation hors du contrôle
- 28. Remplacer le crochet par Powershell
- 29. Emacsclient crochet sur kill
- 30. WinForms: nombre variable de contrôles TextBox dynamiques
merci, je viens d'apprendre sth nouveau (pas seulement comment attraper "coller", écrou une façon de faire des choses) – David
mot-clé de l'événement est manquant sur déclaration de champ Pasted et pourquoi utilisez-vous une variable locale evt? – Maxence
@Maxence, FTFY. – dahvyd