强制创建控件的句柄

时间:2009-11-27 10:21:55

标签: c# controls handle

我正在创建一个静音打印模块。我正在使用的当前控件是,它确保已经创建了控件句柄(IsHandleCreated)。我做了一切来欺骗这一点,没有运气。

您是否有想法如何在不在屏幕上显示控件的情况下为控件创建句柄?

5 个答案:

答案 0 :(得分:21)

您必须访问句柄属性(将结果放入虚拟变量或其他内容)。看看Reflector;它强制创造句柄。

答案 1 :(得分:5)

尝试重载CreateParams属性getter。在其中清除WS_VISIBLE标志。

答案 2 :(得分:2)

我对其他一些控件遇到了同样的问题并使用了Control.CreateControl()方法:

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

但我不知道它如何与打印模块一起使用。

答案 3 :(得分:0)

我通过设置CreationParams的WS_VISIBLE解决了这个烦人的句柄创建问题。您可以覆盖Control的CreationParams属性,也可以使用适当的CreateParams实例调用CreateHandle方法。请参阅link

答案 4 :(得分:0)

调用私有方法CreateHandle将完成工作。

<script>
function toggle_interval(x)
{
    if(x==1)
    {
        var i=0;
        var goint = setInterval(function() {
            i++;
        }, 2000);
    }else{
        clearInterval(goint);
    }
}
</script>

<a href="#" onclick="javascript:toggle_interval(1);">start</a>
<a href="#" onclick="javascript:toggle_interval(0);">stop</a>