CheckBoxList擴充套件方法程式碼

斯克迪亞發表於2009-05-05

public static class CheckedListBox擴充套件

{

    ///

    /// 全部選定所有項

    ///

    public static void 全部選定(this CheckedListBox c)

    {

        for (int i = 0; i < c.Items.Count; i++)

        {

            c.SetItemChecked(i, true);

        }

    }

 

    ///

    /// 全部取消選定所有項

    ///

    public static void 全部取消選定(this CheckedListBox c)

    {

        for (int i = 0; i < c.Items.Count; i++)

        {

            c.SetItemChecked(i, false);

        }

    }

 

    ///

    /// 反向選定所有項

    ///

    public static void 反向選定(this CheckedListBox c)

    {

        for (int i = 0; i < c.Items.Count; i++)

        {

            c.SetItemChecked(i, !c.GetItemChecked(i));

        }

    }

 

    ///

    /// 根據選定狀態列表中的值,逐一設定各列表項的選定狀態

    ///

    /// 選定狀態列表">包含所有列表項對應的選定狀態的列表

    public static void 自設選定(this CheckedListBox c, IEnumerable<bool> 選定狀態列表)

    {

        int x = 0;

        foreach (bool f in 選定狀態列表)

        {

            c.SetItemChecked(x++, f);

        }

    }

 

    ///

    /// 根據選定項索引列表的值,設定指定索引處列表項的選定狀態為已選定,其它處均設為未選定

    ///

    /// 選定項索引列表">包含選定列表項的索引位置的列表

    public static void 自設選定(this CheckedListBox c, IEnumerable<int> 選定項索引列表)

    {

        c.全部取消選定();

        foreach (int f in 選定項索引列表)

        {

            c.SetItemChecked(f, true);

        }

    }

 

    ///

    /// 將一個字典作為資料來源載入到CheckedListBox,字典的鍵即為列表項的值,字典的值用以指示列表項是否被選定

    ///

    /// 型別">自定義型別

    /// 資料來源">資料來源

    public static void 資料來源設定<型別>(this CheckedListBox c, Dictionary<型別, bool> 資料來源)

    {

        var l=資料來源.Values.ToArray();

        c.資料來源設定(資料來源.Keys.ToList());

        c.自設選定(資料來源.Values);

    }

 

    ///

    /// CheckedListBox的列表項及其選定狀態作為字典返回,字典的鍵即為列表項的值,字典的值用以指示列表項是否被選定

    ///

    /// 型別">自定義型別

    /// 字典

    public static Dictionary<型別, bool> 資料來源獲取<型別>(this CheckedListBox c)

    {

        var l = new Dictionary<型別, bool>();

        for (int i = 0; i < c.Items.Count; i++)

        {

            l.Add((型別)c.Items[i], c.GetItemChecked(i));

        }

        return l;

    }

}

相關文章