Question

I'm currently creating a silent print module. The current control I'm using is, it's making sure that the control handle is already created (IsHandleCreated). I did everything to cheat this with no luck at all.

Do you have ideas in mind on how can I create a handle for the control without displaying any in the screen?

Was it helpful?

Solution

Try to overload CreateParams property getter. In it clear the WS_VISIBLE flag.

OTHER TIPS

You have to access the Handle property (put the result in a dummy variable or something). Look in Reflector; it forces handle creation.

I had the same problem with some other controls and used the Control.CreateControl() method:

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

But i don't know how it works with a print module.

I solved this annoying handle creation problem by settings the WS_VISIBLE of CreationParams. You may either override the CreationParams property of Control or call the CreateHandle method with appropriate CreateParams instance. See the link

Calling private method CreateHandle will do the work.

MethodInfo ch = frm.GetType().GetMethod("CreateHandle", BindingFlags.NonPublic | BindingFlags.Instance);
ch.Invoke(frm, new object[0]);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top