从checkbox_CheckChanged返回一个值

时间:2011-10-25 07:40:31

标签: c# winforms events

如何获取checkbox_CheckChanged事件返回的值?它是一个winforms应用程序,表单和复选框都是以编程方式创建的。感谢所有人和任何帮助。

5 个答案:

答案 0 :(得分:4)

Controls事件处理程序始终为“void”,您无法更改return type。相反,您可以使用外部变量,只有在CheckedChanged事件发生时才更改该值。

public bool checkedthecheckbox { get; set; }

CheckBox testchbox = new CheckBox();

private void Form1_Load(object sender, EventArgs e)
{
    testchbox.CheckedChanged += new EventHandler(testchbox_CheckedChanged);
}

void testchbox_CheckedChanged(object sender, EventArgs e)
{
    if (testchbox.Checked)
        checkedthecheckbox = true;
    else
        checkedthecheckbox = false;
}

答案 1 :(得分:1)

您可以通过从事件参数中转发发件人对象来获取Checkbox的状态:

public void Method1()
{
    CheckBox checkBox = new CheckBox();
    checkBox.CheckedChanged += new EventHandler(checkBox_CheckedChanged);
}

void checkBox_CheckedChanged(object sender, EventArgs e)
{
    CheckBox c = (CheckBox)sender;
    bool resutlt = c.Checked;
}

希望这有帮助!

答案 2 :(得分:1)

您可以从'sender'对象中获取值。

CheckBox chk = (CheckBox) sender;
bool result = chk.Checked;

答案 3 :(得分:1)

您可以使用内置于C#的CheckState.CheckedCheckState.Unchecked。例如:

for (int i = 0; i < lsbx_layers.Items.Count; i++) {
    if (lsbx_layers.GetItemCheckState(i) == CheckState.Checked) {
        //set  boolean variable to true
    } else if (lsbx_layers.GetItemCheckState(i) == CheckState.Unchecked) {
         //set  boolean variable to false
    }
}

答案 4 :(得分:0)

我可以选择将常规复选框更改的事件更改为直接为您提供更改的Checked值的事件。

例如,您可以这样使用它:

var myForm = new MyForm();
myForm.CheckBoxChanged += v =>
{
    Console.WriteLine("The value of the checkbox changed to {0}", v);
};

这是类定义:

public class MyForm
{
    public event Action<bool> CheckBoxChanged;
    private CheckBox testchbox = new CheckBox();
    private void Form1_Load(object sender, EventArgs e)
    {
        testchbox.CheckedChanged += (s, e) =>
        {
            var cbc = this.CheckBoxChanged;
            if (cbc != null)
            {
                cbc(testchbox.Checked);
            }
        };
    }
}

我希望这会有所帮助。