Força Criar identificador para controle
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?
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]);