开发者

How to pass a text while firing an event?

开发者 https://www.devze.com 2023-02-16 21:06 出处:网络
I need to pass a checkeditem of a checklistbox while firing an event from a dynamic checklistbox. The code snippet is provided below with comments...

I need to pass a checkeditem of a checklistbox while firing an event from a dynamic checklistbox. The code snippet is provided below with comments... I'm facing an issue with the same piece of code. On mouse double click event its throwing an exception saying IndexoutofRange. Its working fine with the index value 0.Please help 2 solve me both.

private void clbTables_MouseDoubleClick(object sender, MouseEventArgs e)
{
    int indexofselectedtable;
    indexofselectedtable = Convert.ToInt32(clbTables.SelectedIndex); 
    if (clbTables.CheckedItems.Count != 0)
    {
        Metadata metadataobj = new Metadata(dbProperties);
        DBList = metadataobj.GetColumns(clbTables.CheckedItems[indexofselectedtable].ToString()); // This throws an erro开发者_开发百科r on checking an item of index>0.

        for (int j = 0; j < DBList.Count; j++)
        {
            chklistcolumns.Name = "chklist" + j++;
            chklistcolumns.Items.Add(DBList.ElementAt(j));
        }
        this.Controls.Add(chklistcolumns);

        chklistcolumns.ItemCheck += new ItemCheckEventHandler(OnCheckListBoxItemCheck);
    }
}

private void OnCheckListBoxItemCheck(object sender, ItemCheckEventArgs args) //need to pass the tablename which can be got from the object clbTables
{   
    Columns columnobj = new Columns();
    columnobj.ColumnName = this.Text;
    columnobj.Id = this.Name;
    columnobj.TableName= // need to get the tablename from the object clbtables
}


I think I see what the issue here is, you are trying to match the selected index of your CheckedListBox with an index in the CheckedItems collection, but it doesn't work that way.

Consider this: you have 10 items in your CheckedListBox, and three of them are checked. That gives you .Items[10] and .CheckedItems[3]. If then you double click on the 7th item in the CheckedListBox, your SelectedIndex will be 6, but there will only be three items in the CheckedItems collection. So when you try to read clbTables.CheckedItems[6] you are going to be outside of the range of that collection.


clbTables.CheckedItems is another collection. You can't use clbTables.SelectedIndex in it.

Why not just to use SelectedValue property?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号