Question

Je crée actuellement un module d'impression silencieuse. Le contrôle actuel que j'utilise est qu'il s'assure que le descripteur de contrôle est déjà créé ( IsHandleCreated ). J'ai tout fait pour tromper cela sans aucune chance.

Avez-vous des idées en tête sur la façon de créer une poignée pour le contrôle sans en afficher d’écran?

Était-ce utile?

La solution

Essayez de surcharger la propriété CreateParams . Cochez la case WS_VISIBLE .

Autres conseils

Vous devez accéder à la propriété Handle (placez le résultat dans une variable muette ou quelque chose du genre). Regardez dans le réflecteur; il force la création de la poignée.

J'ai eu le même problème avec d'autres contrôles et j'ai utilisé le Control.CreateControl () :

private void CheckForExistingHandle(Control control)
{
    if (!control.IsHandleCreated)
        control.CreateControl();
}

Mais je ne sais pas comment cela fonctionne avec un module d'impression.

J'ai résolu ce problème ennuyeux de création de descripteurs en définissant le paramètre WS_VISIBLE de CreationParams. Vous pouvez remplacer la propriété CreationParams de Control ou appeler la méthode CreateHandle avec l'instance CreateParams appropriée. Voir le lien

L'appel de la méthode privée CreateHandle fera le travail.

MethodInfo ch = frm.GetType().GetMethod("CreateHandle", BindingFlags.NonPublic | BindingFlags.Instance);
ch.Invoke(frm, new object[0]);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top