Pregunta

Actualmente estoy creando un módulo de impresión silenciosa. El control actual que estoy usando es asegurarse de que el control ya esté creado ( IsHandleCreated ). Hice todo lo posible para engañar a este sin ninguna suerte.

¿Tiene ideas en mente sobre cómo puedo crear un controlador para el control sin mostrar ninguna en la pantalla?

¿Fue útil?

Solución

Intente sobrecargar CreateParams getter de propiedad. En él, borre la marca WS_VISIBLE .

Otros consejos

Tienes que acceder a la propiedad Manejar (poner el resultado en una variable ficticia o algo así). Mira en Reflector; obliga a manejar la creación.

Tuve el mismo problema con algunos otros controles y usé Control.CreateControl () :

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

Pero no sé cómo funciona con un módulo de impresión.

Resolví este molesto problema de creación de manejadores configurando el WS_VISIBLE de CreationParams. Puede anular la propiedad CreationParams de Control o llamar al método CreateHandle con la instancia apropiada de CreateParams. Consulte el enlace

Al llamar al método privado, CreateHandle hará el trabajo.

MethodInfo ch = frm.GetType().GetMethod("CreateHandle", BindingFlags.NonPublic | BindingFlags.Instance);
ch.Invoke(frm, new object[0]);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top