728x90
반응형
WPF & C# - Group CheckBox RadioButton ( Grouping / 그룹 체크박스 / 라디오버튼 / 전체선택 / SelectAll / CheckAll / 전체체크해제 ) |
MainWindow.xaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <StackPanel> <!-- Group CheckBox --> <StackPanel x:Name="stp" HorizontalAlignment="Left" VerticalAlignment="Top" Background="#FFE8E8E8" Margin="10"> <TextBlock Text="Group CheckBox" FontWeight="Bold" TextAlignment="Center" Height="20" Background="#FFC3C3C3" TextOptions.TextFormattingMode="Ideal"></TextBlock> <CheckBox Content="Check Box 01" Margin="5" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/> <CheckBox Content="Check Box 02" Margin="5" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/> <CheckBox Content="Check Box 03" Margin="5" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/> <CheckBox Content="Check Box 04" Margin="5" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/> <CheckBox Content="Check Box 05" Margin="5" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/> <Button x:Name="btn" Height="25" Content="Check All" FontWeight="Bold" Margin="5" Click="btn_Click"></Button> <Label x:Name="lbl" Margin="5" Background="White"></Label> <Label x:Name="lbl2" Margin="5" Background="White"></Label> </StackPanel> <!-- Group CheckBox ( RadioButton )--> <StackPanel x:Name="stp1" Margin="10" HorizontalAlignment="Left" VerticalAlignment="Top" Background="#FFE8E8E8"> <TextBlock Text="Group CheckBox ( RadioButton )" FontWeight="Bold" TextAlignment="Center" Height="20" Background="#FFC3C3C3" TextOptions.TextFormattingMode="Ideal"></TextBlock> <CheckBox Content="Check Box 01" Margin="5" Click="CheckBox_Click"></CheckBox> <CheckBox Content="Check Box 02" Margin="5" Click="CheckBox_Click"></CheckBox> <CheckBox Content="Check Box 03" Margin="5" Click="CheckBox_Click"></CheckBox> <CheckBox Content="Check Box 04" Margin="5" Click="CheckBox_Click"></CheckBox> <CheckBox Content="Check Box 05" Margin="5" Click="CheckBox_Click"></CheckBox> <Label x:Name="lbl3" Margin="5" Background="White"></Label> </StackPanel> </StackPanel> | cs |
MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | // Group CheckBox private void CheckBox_Checked(object sender, RoutedEventArgs e) { CheckBoxSelect(); } private void CheckBox_Unchecked(object sender, RoutedEventArgs e) { CheckBoxSelect(); } void CheckBoxSelect() { lbl.Content = ""; lbl2.Content = ""; // 조건에 맞는 객체 찾기 foreach (CheckBox cbx in stp.Children.OfType<CheckBox>()) { if (cbx.IsChecked == true) lbl.Content += cbx.Content.ToString(); } // 조건에 맞는 객체를 배열에 넣기 var chkBoxs = stp.Children.OfType<CheckBox>(); CheckBox[] cbxs = new CheckBox[chkBoxs.Count()]; for (int i = 0; i < cbxs.Count(); i++) { cbxs[i] = stp.Children.OfType<CheckBox>().ElementAtOrDefault(i); if (cbxs[i].IsChecked == true) lbl2.Content += cbxs[i].Content.ToString(); } } // 전체 선택하기 또는 전체 선택 해제하기 private void btn_Click(object sender, RoutedEventArgs e) { CheckAll(); } void CheckAll() { // 전체 CheckBox 숫자 와 IsChecked 가 true 인 숫자가 같다면 if (stp.Children.OfType<CheckBox>().Count() == stp.Children.OfType<CheckBox>().LongCount(r => r.IsChecked == true)) { // 전체 ChecoBox 체크해제 foreach (CheckBox cbx in stp.Children.OfType<CheckBox>()) { cbx.IsChecked = false; } } else { // 전체 ChecoBox 체크 foreach (CheckBox cbx in stp.Children.OfType<CheckBox>()) { cbx.IsChecked = true; } } } // Group CheckBox ( RadioButton ) private void CheckBox_Click(object sender, RoutedEventArgs e) { // 선택한 객체 IsChecked = true 로 변경하기 CheckBox chk = sender as CheckBox; chk.IsChecked = true; lbl3.Content = chk.Content.ToString(); // 조건에 맞는 객체 찾기 ( IsChecked = true 인것을 False로 변경 ) CheckBox chkBox = stp1.Children.OfType<CheckBox>().FirstOrDefault(r => r.Equals(chk) == false && r.IsChecked == true); if (chkBox != null) // 값이 있을때에만... { chkBox.IsChecked = false; } } | cs |
728x90
반응형
'Programing (프로그래밍) > WPF & C# (C Sharp)' 카테고리의 다른 글
WPF & C# - UserControl ListBoxItem ( 사용자 정의 컨트롤 / 리스트박스 아이템 ) (0) | 2018.08.22 |
---|---|
WPF & C# - Window 프로그램 종료 순서 ( Closing > Unloaded > Closed ) (1) | 2018.08.22 |
WPF & C# - 초성검색 한글자동완성 ( 한글 / 영어/ 숫자 검색 가능 / 유니코드 매칭 / unicode) (2) | 2018.08.22 |
WPF & C# - 파일명 및 긴문자열을 ... 으로 나타내기 및 줄이기 ( 확장자 여부 상관없이 사용 가능 / C:\ABCDEF.txt > ABC....txt ) (0) | 2018.08.21 |
WPF & C# - Group CheckBox 두가지 방법 ( Grouping / 그룹 체크박스 ) (0) | 2018.08.14 |
WPF & C# - ListBox 를 WrapPanel 처럼 사용하기 ( ItemsPanelTemplate ) (2) | 2018.08.13 |
WPF & C# - Enum 열거형 변수 사용법 (0) | 2018.08.10 |
WPF & C# - 암호화 / 복호화 AES256 ( Encrypt / Decrypt ) (4) | 2018.08.10 |