C# 事件未正确连接

C# 事件未正确连接,c#,.net,winforms,events,C#,.net,Winforms,Events,不确定我是否能够很清楚地表述我的问题,但让我试试: 所以我写了一小段代码,当他的电脑被锁定时,用户可以选择所需的Office Communicator状态(默认情况下,它会自动进入状态“远离”)。所以这里是Windows窗体,它基本上是一个组合框和一个按钮。组合框有四个选项“远离”、“忙碌”、“请勿打扰”和在线 的“分别。一切正常,程序编译正常。菜单出现,您选择想要的状态,按下按钮,然后锁定您的电脑-到目前为止一切正常。您的状态为“已选择”。现在出现问题。您解锁电脑并尝试选择不同的状态,相同的操

不确定我是否能够很清楚地表述我的问题,但让我试试:

所以我写了一小段代码,当他的电脑被锁定时,用户可以选择所需的Office Communicator状态(默认情况下,它会自动进入状态“远离”)。所以这里是Windows窗体,它基本上是一个组合框和一个按钮。组合框有四个选项“远离”、“忙碌”、“请勿打扰”和在线 的“分别。一切正常,程序编译正常。菜单出现,您选择想要的状态,按下按钮,然后锁定您的电脑-到目前为止一切正常。您的状态为“已选择”。现在出现问题。您解锁电脑并尝试选择不同的状态,相同的操作,但是当你锁定电脑时,它仍然显示以前选择的状态。这里是按钮点击法

public void Btn_Click(Object sender, EventArgs e)
{
    // When the button is clicked,
    // change the button text, and disable it.     
    if (Comb.Text == "Away")
    {    
        MessageBox.Show("Saved ! \nYour Status will be 'Away' ");
        Method2();
    }

    else if (Comb.Text == "Busy")
    {       
        MessageBox.Show("Saved ! \nYour Status will be  'Busy' ");
        Method1();    
    }

    else if (Comb.Text == "Do Not Disturb")
    {
        MessageBox.Show("Saved ! \nYour Status will be 'Do Not Disturb' ");
        Method3();
    }

    else
    {   
        MessageBox.Show("Saved ! \nYour Status will be 'Online' ");
        Method4();
    }

    But.Enabled = true;
    // Display the greeting label text.
}
因此,这4种方法(Method1()、2…等)是根据组合框下拉菜单中的文本(您选择的状态)来更改状态的方法。我已经分别测试了所有方法,它们工作得很好。因此,我排除了它们的一个问题,这是一些逻辑错误吗?

尼古拉,试一试。在代码的边距中,单击行
if(Comb.Text==“Away”)
旁边的一次,然后将鼠标悬停在变量名称上,查看每次运行时它们的设置。您可以使用“单步执行”、“单步执行”和“单步执行”函数分别“执行高亮显示的方法而不查看内部”、“调试方法的内部”或“将当前方法运行到底,然后显示下一级”

static void SystemEvents_SessionSwitch1(object sender, SessionSwitchEventArgs e)
{
    if (e.Reason == SessionSwitchReason.SessionLock)
    {
        System.Threading.Thread.Sleep(500);
        CommunicatorAPI.MessengerClass comm = new CommunicatorAPI.MessengerClass();

        if (comm.MyStatus==MISTATUS.MISTATUS_AWAY)
        {
            SetMyPresence1 ();
        } else if (e.Reason == SessionSwitchReason.SessionUnlock)
        {
            ChangeStatus1 ();
        }
    }
}

如果你这样做,你就会明白为什么你会得到一个错误,这将更容易确定错误来自哪里。(例如,如果变量设置为意外值,您将知道该值何时更改)。

我假设您将使用visual express或visual studio的一个版本。您是否尝试过在Click_事件上设置断点并调试程序?对于不同的第一个选择,是相同的场景吗?失败的不是你发布的代码。它自己基本上什么都不做。因此,如果你调试并发现代码实际上破坏了这篇文章,我相信在你可以反向拼写“debug”之前,你会得到一个答案:)符文FS,你的第一个选择是什么并不重要,它总是相同的场景。请检查是否有其他代码更改了你的组合框。通常,这些问题的解决方案是外部的。我们可以看到其中一个编号方法的代码吗?这可能有助于了解为什么不重写已经存在的值。SetMyPresence1()中会发生什么情况?这大概就是状态应该改变的地方…嗨,Mark,SetMyPresence基本上就是状态改变的地方。这很简单,我之前已经测试过很多次了,所以我不希望问题来自这一行