'...'没有重载匹配委托'System.Windows.Forms.ItemCheckEventHandler'

时间:2015-06-13 03:28:50

标签: c#

在阅读this问题之后,我很明显我正在写错误的事件。但是,我不知道我将如何使用对象发件人重写我写的内容。我的事件将所选复选框中的文本添加到二维列表(报告),报告中的顺序必须与所选复选框的顺序相同。此外,一次只能选择两个复选框。这是事件:

void checkedListBox_ItemCheck(CheckedListBox chkdlstbx, ItemCheckEventArgs e)
    {
        int index = Convert.ToInt32(chkdlstbx.Tag);
        if ((chkdlstbx.CheckedItems.Count == 0) && (e.CurrentValue == CheckState.Unchecked))
        {
            Var.report[index].Add(chkdlstbx.Text);
        }
        if ((chkdlstbx.CheckedItems.Count == 1) && (e.CurrentValue == CheckState.Checked))
        {
            Var.report[index].RemoveAt(0);
        }
        if ((chkdlstbx.CheckedItems.Count == 1) && (e.CurrentValue == CheckState.Unchecked))
        {
            if (chkdlstbx.SelectedIndex < chkdlstbx.CheckedIndices[0])
            {
                Var.report[index].Insert(0, chkdlstbx.Text);
            }
            else
            {
                Var.report[index].Add(chkdlstbx.Text);
            }
        }
        if ((chkdlstbx.CheckedItems.Count == 2) && (e.CurrentValue == CheckState.Checked))
        {
            if (chkdlstbx.SelectedIndex == chkdlstbx.CheckedIndices[0])
            {
                Var.report[index].RemoveAt(0);
            }
            else
            {
                Var.report[index].RemoveAt(1);
            }
        }
        if ((chkdlstbx.CheckedItems.Count == 2) && (e.CurrentValue == CheckState.Unchecked))
        {
            e.NewValue = CheckState.Unchecked;
        }
        updateReport();
    }

这条线被称为:

chkdlstbx.ItemCheck += new ItemCheckEventHandler(checkedListBox_ItemCheck);

如果有人可以帮助我使用对象重写我的事件,那就太棒了。我不确定我会怎样解决这个问题!

1 个答案:

答案 0 :(得分:1)

这应该足够了:

void checkedListBox_ItemCheck(object sender, ItemCheckEventArgs e)
{
    CheckedListBox chkdlstbx = sender as CheckedListBox;
    if (chkdlstbx == null)
    {
        throw new InvalidArgumentException();
    }
    ....
}