Forza la creazione della maniglia per il controllo
Domanda
Attualmente sto creando un modulo di stampa silenzioso. Il controllo corrente che sto usando è, sta assicurando che l'handle di controllo sia già stato creato ( IsHandleCreated
). Ho fatto di tutto per imbrogliare questo senza fortuna.
Hai in mente idee su come posso creare un handle per il controllo senza visualizzarne uno sullo schermo?
Soluzione
Prova a sovraccaricare il getter della proprietà CreateParams
. In esso deselezionare il flag WS_VISIBLE
.
Altri suggerimenti
Devi accedere alla proprietà Gestisci (inserisci il risultato in una variabile fittizia o qualcosa del genere). Cerca in Reflector; impone di gestire la creazione.
Ho avuto lo stesso problema con alcuni altri controlli e ho usato Control.CreateControl ()
metodo:
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 dell'handle impostando WS_VISIBLE di CreationParams. È possibile sostituire 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]);