Forza crea l’handle per Control

Attualmente sto creando un modulo di stampa silenzioso. Il controllo corrente che sto usando è, è assicurarsi che l’handle di controllo sia già stato creato ( IsHandleCreated ). Ho fatto di tutto per imbrogliare questo senza alcuna fortuna.

Hai idee in mente su come posso creare un handle per il controllo senza visualizzarne nessuno sullo schermo?

Prova a sovraccaricare il getter della proprietà CreateParams . WS_VISIBLE flag WS_VISIBLE .

Devi accedere alla proprietà Handle (inserisci il risultato in una variabile dummy o qualcosa del genere). Guarda in Reflector; costringe a gestire la creazione.

Ho avuto lo stesso problema con alcuni altri controlli e ho usato il metodo Control.CreateControl() :

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

Ma non so come funziona con un modulo di stampa.

Ho risolto questo fastidioso problema di creazione degli handle impostando WS_VISIBLE di CreationParams. È ansible sovrascrivere la proprietà CreationParams di Control o chiamare il metodo CreateHandle con l’istanza CreateParams appropriata. Vedi il link

Chiamando il metodo privato CreateHandle farà il lavoro.

 MethodInfo ch = frm.GetType().GetMethod("CreateHandle", BindingFlags.NonPublic | BindingFlags.Instance); ch.Invoke(frm, new object[0]);