вернуть значение из checkbox_CheckChanged - PullRequest
1 голос
/ 25 октября 2011

Как я могу получить значение, возвращаемое из события checkbox_CheckChanged, пожалуйста? Это приложение winforms, и форма и флажок создаются программно. Спасибо за все и любую помощь.

Ответы [ 5 ]

4 голосов
/ 25 октября 2011

Обработчики событий Controls всегда "void", и вы не можете изменить тип возврата .Вместо этого вы можете взять внешнюю переменную и изменить это значение только в том случае, когда происходит событие 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 голос
/ 06 мая 2016

Вы можете использовать CheckState.Checked или CheckState.Unchecked, встроенный в C #. Пример:

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
    }
}
1 голос
/ 25 октября 2011

Вы можете получить значение из объекта 'sender'.

CheckBox chk = (CheckBox) sender;
bool result = chk.Checked;
1 голос
/ 25 октября 2011

Вы можете получить состояние флажка, приведя объект отправителя к аргументам события:

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;
}

Надеюсь, это поможет!

0 голосов
/ 25 октября 2011

У меня есть альтернатива для изменения обычного измененного флажка измененного события на событие, которое напрямую предоставляет вам измененное значение 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);
            }
        };
    }
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...