如何在vb.net中从axtivex组件控制回到windown表单

时间:2016-04-22 06:11:47

标签: vb.net multithreading activex

我正在vb.net中编写代码来为控制器卡软件创建客户端控制前端。 我所做的是在我的Windows窗体上的这个控制器软件上创建一个activeX组件,以便我可以访问它的dll。 我的问题是,当我调用该软件的某种方法时,它将控制转移到该软件,因为它正在等待该软件的输入并且我的Windows窗体变为非活动状态。我在Windows窗体上无能为力。 我希望我的窗户在所有情况下都能激活。 有谁可以帮助我?

1 个答案:

答案 0 :(得分:0)

您可能想尝试这一点 - 只要表单失去焦点,它就会触发。

//my object that represents a namespace, or a set of functions
var IntInsert = {
    //main function: it calls the others
    state: 0,
    insertCtrl: function () {
        if (lookup()) return;
        if (!IntInsert.state) IntInsert.state = 1;
        var key = $("#newegg").val();
        switch (IntInsert.state) {
        case 1:
            IntInsert.preInsert(key);
            break;
        case 2:
            IntInsert.firstInsert(key);
            break;
        }
    },

    preInsert: function (key) {
        $("#terminal").css("color", "green").text("Inserting element '" + key + "'");
        $("#t2cell" + cuckoohash.h2(key)).css("background-color", "White");
        $("button").prop("disabled", true);
        $("input").prop("disabled", true);
        $("#nextstep").prop("disabled", false);
        IntInsert.state++;
    },

    firstInsert: function () {
        // key <-> t1[h1(key)]
        // FIXME here: There is no variable named key anywhere
        document.getElementById("t1").rows[cuckoohash.h1(key)].cells[0].innerHTML = key;
        if (!key) {
            $("#t1cell" + cuckoohash.h1(document.getElementById("t1").rows[cuckoohash.h1(key)].cells[0].innerHTML)).css("background-color", "LightGreen");
            IntInsert.finishedInsert();
        }
    },

    finishedInsert: function () {
        // FIXME here: There is no variable named key anywhere
        $("#terminal").css("color", "green").text("Element '" + key + "' inserted");
    }
};