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?

È stato utile?

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]);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top