如何在c#中添加复选框内的复选框

时间:2011-05-11 07:01:49

标签: c# combobox checkbox

我想在C#中的comboBox中添加复选框。我的目的是用户可以从一个ComboBox中选择多个值(全部选中并取消全部选中)。

请帮助

3 个答案:

答案 0 :(得分:7)

您必须通过提供自己的渲染策略来扩展ComboBox控件,并“手动”添加CheckBox。

这些开源项目已经可以使用了:

http://www.codeproject.com/KB/combobox/CheckComboBox.aspx http://www.codeproject.com/KB/combobox/extending_combobox.aspx

答案 1 :(得分:3)

恕我直言,这是ComboBox控件的错误用法,因为用户无法看到他的选择。 对于多个选择,我建议您考虑CheckedListBox控件 link to MSDN

答案 2 :(得分:0)

我在http://dropdowncheckboxes.codeplex.com/有一个ASP.NET开源控件,我已经习惯并且非常满意。在http://www.codeproject.com/KB/combobox/extending_combobox.aspx还有一个WinForms开源控件看起来不那么强大,但也许有人可以结合两者的优点。如果实施得当,这对您的工具包来说真的是一个很好的补充。以上两个实现显示了所选的所有项目,并在缩小的区域中为您提供了许多相关的复选框,并具有出色的分组。我对ASP.NET版本的补充是允许已检查文件的列表仅使用文件名而不是完整路径(如果这样做太长)。请参阅上面的链接获取完整代码下面是我的补充,在你的回发处理程序中调用而不是UpdateSelection:

// Update the caption assuming that the items are files 
// If the caption is too long, eliminate paths from file names 
public void UpdateSelectionFiles(int maxChars) { 
  StringBuilder full = new StringBuilder(); 
  StringBuilder shorter = new StringBuilder(); 
  foreach (ListItem item in Items) { 
    if (item.Selected) { 
      full.AppendFormat("{0}; ", item.Text);
      shorter.AppendFormat("{0}; ", new FileInfo(item.Text).Name); 
    } 
  } 
  if (full.Length == 0) Texts.SelectBoxCaption = "Select..."; 
  else if (full.Length <= maxChars) Texts.SelectBoxCaption = full.ToString(); 
  else Texts.SelectBoxCaption = shorter.ToString(); 
}