J'essaye d'obtenir un contrôle de raccourci fonctionnant en C# basé sur la classe Control et la classe msctls_hotkey32 win32. Ce que j'ai fonctionne, bien que ce ne soit pas parfait:Habillage de msctls_hotkey32 dans .NET Windows Forms
class Hotkey : TextBox
{
protected override CreateParams CreateParams
{
get
{
CreateParams parms = base.CreateParams;
parms.ClassName = "msctls_hotkey32";
return parms;
}
}
// (some other p/invoke stuff for HKM_SETHOTKEY, etc.)
}
Les avantages sont que c'est simple et cela fonctionne. L'inconvénient est qu'il hérite d'un tas de fonctionnalités de TextBox qui ne s'applique pas à ce contrôle. Ma question est donc: existe-t-il une meilleure façon de le faire sans réinventer la roue?
Merci.
Auparavant, lorsque j'ai essayé de tirer le contrôle, il ne fonctionnait pas - il semblait que le contrôle était « en lecture seule », était gris et que le curseur de texte clignotait en ce qu'il n'a pas accepté de l'entrée . L'ajout de cet appel SetStyle a corrigé cela, cependant. Que fait-il exactement? – Reinderien
Fondamentalement, il indique au contrôle que la peinture ne sera pas faite par le code de contrôle, par défaut la classe de contrôle suppose que la peinture du contrôle sera faite par le contrôle lui-même, mais dans ce cas la peinture doit être faite par le contrôle natif définissant l'indicateur UserPaint sur false indique au contrôle de ne pas déclencher l'événement Paint. –
Génial, bon ça marche parfaitement, merci. – Reinderien