有条件地检查拨动开关c#

时间:2015-03-31 15:21:49

标签: c# visual-studio-2012

我在VS2012上使用c# 在为Visual Studio 2012安装NI Measurement Studio 2013之后,我创建了一个Windows窗体并添加了一个切换开关。 在代码中我想检查切换开关状态是否已经改变,但是我遇到了问题,我确信这里提出的问题可能就像其他问题一样,这对其他问题来说很简单,但我很困难。 我一直收到错误: 错误1事件'NationalInstruments.UI.WindowsForms.Boolean.StateChanged'只能出现在+ =或 - =

的左侧

阅读其他帖子我看到有关.NET框架如何不允许在定义它的类之外直接修改事件的讨论,但在这种情况下我不是试图修改它,只是获取它的状态??

我做错了什么?

谢谢,

这是我的代码:

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void switch1_StateChanged(object sender, ActionEventArgs e)
        {
            if (switch1.StateChanged = true)
            {
                //do something
            }
        }
    }
}

4 个答案:

答案 0 :(得分:3)

您可以使用:

if(switch1.StateChanged)
{
   //do something
}

在C#中,您使用==来比较原始值。

答案 1 :(得分:0)

错误来自于您需要在C#中进行==比较,例如:

 if (switch1.StateChanged == true)
 {
     //do something
 }

然而,由于StateChanged是一个事件,这仍然没有意义。我希望看到类似的东西:

 public Form1()
 {
    InitializeComponent();
    StateChanged += switch1_StateChanged;
 }

 private void switch1_StateChanged(object sender, ActionEventArgs e)
 {
    //do something
 }

这将注册您的StateChanged事件处理程序,并且在触发状态更改事件时将执行其中的代码。

我认为你可能误解了一个事件是一个或多个函数(委托)在事件发生时被执行的事实,而不是它是某种布尔标志(它不是')。希望这有帮助!

答案 2 :(得分:0)

您的代码

switch1.StateChanged = true

是一项任务(如x = 5)。您可能需要进行比较(x == 5b == true),以获得真或假(这就是为什么您可以删除== true部分。

但是,由于StateChanged似乎是一个事件,因此您将为此事件分配方法,该方法将在StateChanged之后调用。您的私有方法switch1_StateChanged可能已经是这样的方法。因此,您不需要检查StateChanged,因为只有在更改状态时才会调用此方法。

答案 3 :(得分:0)

我最终使用了这段代码: private void switch1_StateChanged(object sender,ActionEventArgs e)         {

        if (switch1.Value)
        {

        }
        else 
        {
            led1.Value = false;
        }
    }