【问题标题】:How to get all checked checkboxes in WPF?如何在 WPF 中获取所有选中的复选框?
【发布时间】:2019-02-28 23:14:53
【问题描述】:

我试图为这个问题找到任何解决方案,但没有成功。我只找到了不适用于 WPF 的 WinForms 解决方案。

我有一个简单的表单,上面有一些复选框。我想知道检查了哪些复选框。我知道的唯一方法是为每个复选框创建一个方法,例如

"Checkbox1_Checked(object sender, RoutedEventArgs e)" 

并在列表中添加复选框的名称(如果未选中该框,则将其从列表中删除)。

有没有其他方法可以获得所有选中的复选框?类似的东西

foreach (var cb in this.Controls)
{
    if (cb is Checkbox && cb.IsCheked()) // blablabla
}

【问题讨论】:

  • 您不必为它们中的每一个创建方法。在你的情况下,一种方法就足够了。
  • 在 WPF 中,所有组件都存在于其他组件中,通常是 Panel(或派生组件,如 Grid、StackPanel 等),您必须获取面板的所有子项,因此可以将所有 Checkbox 获取到面板中并进行验证无论是否选中,一个好的解决方案是执行@Shawn的答案

标签: c# wpf checkbox


【解决方案1】:

您可以为此使用 LINQ。 假设您将父控件命名为grid,例如。

var list = this.grid.Children.OfType<CheckBox>().Where(x => x.IsChecked == true);

或者,如果您不想命名它 - 假设您的容器派生自 Panel(例如 GridStackPanel...) - 只需像这样转换它

var list = (this.Content as Panel).Children.OfType<CheckBox>().Where(x => x.IsChecked == true);

【讨论】:

  • 谢谢!你帮了大忙!
猜你喜欢
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 2015-08-25
  • 2016-11-02
  • 1970-01-01
相关资源
最近更新 更多