###前提・実現したいこと
画面にCheckBoxを複数配置して
チェックボックス全てにチェックが入ったときのみ、
Buttonを有効にする、ということやりたいと考えています。
単純な実装はできたのですが(下に実装を記載しました)、
各チェックボックスのクリックイベント発生時に
同じチェック処理を実装することとなり、冗長な実装だと思っています。
これを1つの処理にする方法はありませんでしょうか?
(例えば、画面再描画(?)されるタイミングで行う方法など)
初心者レベルの質問で申し訳ありません。
よろしくお願いいたします。
###該当のソースコード
XAML
<Window x:Class="TestAPP.MainWindow" 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:local="clr-namespace:TestAPP" mc:Ignorable="d" Title="MainWindow" Height="223.667" Width="239.333"> <Grid> <Button x:Name="Button1" Content="Button" HorizontalAlignment="Left" Margin="74,143,0,0" VerticalAlignment="Top" Width="74" Click="Button1_Click"/> <CheckBox x:Name="checkBox1" Content="CheckBox1" HorizontalAlignment="Left" Margin="74,28,0,0" VerticalAlignment="Top" Click="CheckBox1_Click"/> <CheckBox x:Name="checkBox2" Content="CheckBox2" HorizontalAlignment="Left" Margin="74,60,0,0" VerticalAlignment="Top" Click="CheckBox2_Click"/> <CheckBox x:Name="checkBox3" Content="CheckBox3" HorizontalAlignment="Left" Margin="74,98,0,0" VerticalAlignment="Top" Click="CheckBox3_Click"/> </Grid> </Window>
C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace TestAPP { /// <summary> /// MainWindow.xaml の相互作用ロジック /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Button1.IsEnabled = false; } private void CheckBox1_Click(object sender, RoutedEventArgs e) { CheckButtonEnable(); // 冗長? } private void CheckBox2_Click(object sender, RoutedEventArgs e) { CheckButtonEnable(); // 冗長? } private void CheckBox3_Click(object sender, RoutedEventArgs e) { CheckButtonEnable(); // 冗長? } private void CheckButtonEnable() { if ((true == checkBox1.IsChecked) && (true == checkBox2.IsChecked) && (true == checkBox3.IsChecked)) { Button1.IsEnabled = true; } else { Button1.IsEnabled = false; } } private void Button1_Click(object sender, RoutedEventArgs e) { // ボタン有効時に行う実行処理 } } }
回答2件
あなたの回答
tips
プレビュー