【问题标题】:Getting Label Text of CheckBox from a CheckedListBox从 CheckedListBox 获取 CheckBox 的标签文本
【发布时间】:2011-08-19 04:47:25
【问题描述】:

我目前有一个带有多个框的 CheckedListBox。我希望能够测试列表中的每个 Checkbox 以查看是否已选中,如果已选中,请将其文本值 (CheckBox.Text) 添加到字符串列表中。

这是我所拥有的:

for ( int i = 0; i < multiTaskChecks.Items.Count; i++ )
{
    if ( multiTaskChecks.GetItemChecked(i) )
    {
        checkedMultiTasks.Add(multiTaskChecks.GetItemText(i));
    }
}

使用它,GetItemText 将返回 0、1、2、3 等,而不是我所追求的文本值。我也试过CheckedListBox.Text.IndexOf(i)CheckedListBox.Text.ToList(),每个都没有运气。

我只是无法从 CheckedListBox 中获取其中一个 CheckBox 的标签文本。对此的任何帮助将不胜感激。

【问题讨论】:

    标签: c# .net list checkedlistbox


    【解决方案1】:

    首先,您应该只能像这样循环检查项目

    foreach (var item in multiTaskChecks.CheckedItems)
    {
    }
    

    然后根据item 的类型,从中获取您想要的任何属性。听起来它只是一个文本,或者你只想要字符串,所以

    foreach (var item in multiTaskChecks.CheckedItems)
    {
        checkedMultiTasks.Add(item.ToString());
    }
    

    或者我更喜欢

    checkedMultiTasks.AddRange(multiTaskChecks.CheckedItems.
        OfType<object>().Select(‌​i => i.ToString()));
    

    【讨论】:

    • 我不想编辑您的答案,或将其添加到我的答案中,但这是您需要做的:'checkedMultiTasks.AddRange(multiTaskChecks.CheckedItems.OfType() .Select(i => i.ToString()));'
    • @Jay 感谢您的提醒 - 我实际上并没有尝试过,显然已经足够了。
    【解决方案2】:

    试试这个:

    for (int i = 0; i < multiTaskChecks.Items.Count; i++)
    {
        if (multiTaskChecks.GetItemChecked(i))
        {
            checkedMultiTasks.Add(multiTaskChecks.GetItemText(multiTaskChecks.Items[i]));
        }
    }
    

    ListControl.GetItemText Method

    注意关于此方法的DisplayMember 有一个注意事项:

    If the DisplayMember property is not specified, the value returned by GetItemText is the value of the item's ToString method. Otherwise, the method returns the string value of the member specified in the DisplayMember property for the object specified in the item parameter.

    【讨论】:

      【解决方案3】:

      这应该可行:

      var checkedMultiTasks = new List<string>();
      foreach(var item in multiTaskChecks.CheckedItems) {
          checkedMultiTasks.Add(item.ToString());
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多