从Xamarin.Android中的单击事件处理程序访问CheckBox属性

时间:2015-06-16 21:07:59

标签: c# android xamarin xamarin.android

如果我像这样编写事件处理程序:

CheckBox whatever = FindViewById<CheckBox> (Resource.Id.checkBox1);
whatever.Click += (s, e) =>
{
    if (!whatever.Checked)
    {
    //do stuff
    }
}

调用处理程序时抛出异常。如果我为具有不同名称的同一视图创建另一个CheckBox对象 - 如下所示:

CheckBox whatever = FindViewById<CheckBox> (Resource.Id.checkBox1);
whatever.Click += (s, e) =>
{
    CheckBox whatever2 = FindViewById<CheckBox> (Resource.Id.CheckBox1);
    if (!whatever2.Checked)
    {
    //do stuff
    }
}

没有问题。为什么需要重复的对象?

2 个答案:

答案 0 :(得分:2)

这是一个奇怪的问题,如果checkBox1&amp; CheckBox1不匹配是一个错字。无论如何,您最好使用CheckedChanged事件。所有下面的场景都运行得很好,所以代码中的其他内容可能不匹配。布局上的Id是checkBox1还是CheckBox1?

        var checkBox = FindViewById<CheckBox>(Resource.Id.CheckBox1);

        checkBox.CheckedChange += (sender, args) =>
        {
            if (!args.IsChecked)
            {

            }
        };

        checkBox.Click += (sender, args) =>
        {
            if (!checkBox.Checked)
            {

            }

            if (!((CheckBox)sender).Checked)
            {

            }
        };

答案 1 :(得分:0)

你用什么方法分配什么控件?

import os, sys

#open files in directory

path = "My Documents"
dirs = os.listdir( path )

# print the files in given directory

for file in dirs:
   print (file)

我总是在OnResume事件中声明我的控件。