通常如果在應用程式裡要以程式取得被勾選的CheckBox有哪些,一般應該都會放個迴圈下去跑,把所有的CheckBox爬過一次,逐一比對是不是有被勾選,不過,有個更簡單的方式!!
用LINQ!!
通常如果在應用程式裡要以程式取得被勾選的CheckBox有哪些,一般應該都會放個迴圈下去跑,把所有的CheckBox爬過一次,逐一比對是不是有被勾選,不過,有個更簡單的方式!!
用LINQ!!
這次直接用小小的Silverlight範例來介紹,順便當練習吧!!
<UserControl xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" x:Class="SL_FindControlsByLinq.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:theme="clr-namespace:System.Windows.Controls.Theming;assembly=System.Windows.Controls.Theming.ExpressionDark"
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="800">
<theme:ExpressionDarkTheme>
<Grid x:Name="LayoutRoot" Background="Transparent" Margin="20">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="32"></RowDefinition>
</Grid.RowDefinitions>
<toolkit:WrapPanel Name="wrpContainer" >
<CheckBox Content="CheckBox1" Height="16" Name="checkBox1" Margin="20" FontSize="14" />
<CheckBox Content="CheckBox2" Height="16" Name="checkBox2" Margin="20" FontSize="14" />
<CheckBox Content="CheckBox3" Height="16" Name="checkBox3" Margin="20" FontSize="14" />
<CheckBox Content="CheckBox4" Height="16" Name="checkBox4" Margin="20" FontSize="14"/>
<CheckBox Content="CheckBox6" Height="16" Name="checkBox6" Margin="20" FontSize="14" />
<CheckBox Content="CheckBox7" Height="16" Name="checkBox7" Margin="20" FontSize="14" />
<CheckBox Content="CheckBox8" Height="16" Name="checkBox8" Margin="20" FontSize="14" />
<CheckBox Content="CheckBox9" Height="16" Name="checkBox9" Margin="20" FontSize="14" />
<CheckBox Content="CheckBox10" Height="16" Name="checkBox10" Margin="20" FontSize="14" />
</toolkit:WrapPanel>
<Button Name="btnGetCheckedItems" Grid.Row="1" Content="GetCheckedItems" HorizontalAlignment="Center"
Padding="5" Click="btnGetCheckedItems_Click" FontSize="14" />
</Grid>
</theme:ExpressionDarkTheme>
</UserControl>
using System.Linq;
using System.Windows;
using System.Windows.Controls;
namespace SL_FindControlsByLinq
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void btnGetCheckedItems_Click( object sender , RoutedEventArgs e )
{
var checkedItems = wrpContainer.Children.OfType<CheckBox>().Where( c => c.IsChecked == true );
MessageBox.Show( string.Format( "有 {0} 個項目已被選取" , checkedItems.Count().ToString() ) );
}
}
}
沒錯!!用LINQ來完成這件事就是這麼的簡單,要取得有幾個CheckBox被勾選只要一行的程式碼!!當然,還有更多其他的應用方式!!所以~忘掉落落長的迴圈吧!!信LINQ得永生!!!!
執行出來的結果如下:
最後一樣奉上專案原始碼,請自行服用: