Pergunta

Atualmente, estou criando um módulo de impressão silencioso. O controle atual que estou usando é, é garantir que o identificador de controle já esteja criado (IsHandleCreated). Fiz tudo para trapacear isso sem sorte.

Você tem idéias em mente como posso criar um identificador para o controle sem exibir nenhuma na tela?

Foi útil?

Solução

Tente sobrecarregar CreateParams Propriedade getter. Nele claro o WS_VISIBLE bandeira.

Outras dicas

Você tem que acessar o Lidar com Propriedade (coloque o resultado em uma variável dummy ou algo assim). Olhe no refletor; Força lidar com a criação.

Eu tive o mesmo problema com outros controles e usei o Control.CreateControl() método:

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

Mas não sei como funciona com um módulo de impressão.

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]);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top