2010-10-13 89 views
0

不知道我是否将能够制定我的问题十分清楚,但是让我来试试:事件不挂钩正确

所以我写了一小段代码,这将给用户的选项选择当他的电脑被锁定时,他的Office Communicator所需的状态(默认情况下,它自动处于状态“离开”)。因此,这里是Windows窗体,基本上是一个组合框和一个按钮。组合有四个选项“离开” “忙碌”,“请勿打扰”和“在线”,一切都看起来不错,程序编译就可以了。菜单出现后,选择你想要的状态,按下按钮,然后锁定你的电脑 - 到目前为止,一切都变得完美。状态为选定状态。现在出现问题。您解锁PC并尝试选择不同的状态,相同的操作,但是当您锁定PC时, LL显示先前选定的状态这里是Button_Click方法

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种方法(方法1(),2 ...等)是一个改变取决于文本组合框下拉状态菜单(你选择的状态)我已经测试了所有方法,并且他们的工作非常美丽,我排除了他们的问题,这是否是一些逻辑错误?

+0

我假设你将要使用视觉表达或视觉工作室的版本。你有没有试过在Click_Event上设置断点并调试程序? – 2010-10-13 20:34:52

+0

对于不同的第一选择,情况是否一样?这不是你发布的代码失败。它基本上什么都不做。所以,如果你调试并发现代码实际上打破了帖子,我相信你会得到一个答案,然后你可以向后拼写'调试':) – 2010-10-13 20:43:12

+0

以及我使用SharpDevelop – Nikolay 2010-10-13 20:43:50

回答

0
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(); 
     } 
    } 
} 
+0

内SetMyPresence1会发生什么()?这大概是地位应该改变的地方...... – 2010-10-13 21:17:20

+0

嗨Mark,SetMyPresence基本上是状态改变的地方,它很简单,我在此之前已经测试过很多次,所以我不期望问题来自这一行 – Nikolay 2010-10-13 21:18:45

0

尼古拉,给SharpDevelop's debugger一试。在代码的边距中,单击if (Comb.Text == "Away")行旁边的一次,然后将鼠标悬停在变量名称上,查看每次运行时设置的内容。您可以使用“跳过”,“跳入”和“跳出”功能“执行突出显示的方法而不看内部”,“调试方法的内部”或“将当前方法运行到结尾,然后展示下一个级别“。

如果你这样做,你会计算出为什么你得到一个错误,并且确定错误来自哪里将更容易。 (例如,如果一个变量被设置为一个意想不到的值,你就会知道什么时候改变了)。