๐ฉ๐ป๐พ
[C#/WPF] ToggleButton ๋๋ฆผ ๊ฐ์ ์ ํํ๊ธฐ ๋ณธ๋ฌธ
์ด๋ฒ ํฌ์คํ ์์๋ ToggleButton ๋๋ฆผ ๊ฐ์๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์ฑํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐ์ , ์ ๋ 6๊ฐ์ ToggleButton ์ค ์ต๋ 4๊ฐ๊น์ง ๋๋ฆด ์ ์๋๋ก ํ์์ต๋๋ค.
ToggleButton ์ด 6๊ฐ๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ , ์ค์๊ฐ์ผ๋ก ToggleButton์ด ์ด ๋ช ๊ฐ ๋๋ ธ๋์ง ํ์ํ label๋ ์ฐ์ธก ์๋จ์ ํ๋ ๋ง๋ค์ด์ฃผ์์ต๋๋ค.
์ด์ IsChecked๊ฐ true์ false์ผ ๋ ๊ฐ๊ฐ์ ๋ฒํผ ์ด๋ฒคํธ๋ฅผ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค.
private int cnt = 0;
private void ToggleButton_Checked(object sender, RoutedEventArgs e)
{
cnt += 1;
lbl.Content = cnt;
if (cnt > 4)
{
MessageBox.Show("์ต๋ 4๊ฐ๊น์ง ์ ํ ๊ฐ๋ฅํฉ๋๋ค!");
((ToggleButton)sender).IsChecked = false;
}
}
private void ToggleButton_UnChecked(object sender, RoutedEventArgs e)
{
cnt -= 1;
lbl.Content = cnt;
}
์ฝ๋ ์ค๋ช ์ ๊ฐ๋จํ ํ์๋ฉด ๋๋ฆฐ ToggleButton์ ์๋ฅผ ์ ์ญ ๋ณ์ cnt๋ก ์ค์ ํ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํจ์ ToggleButton_Checked์์๋ cnt += 1์ ํด์ฃผ๊ณ ๋ง์ฝ cnt์ ๊ฐ์ด ์ต๋ ๋๋ฆผ ๊ฐ์์ธ 4๋ณด๋ค ์ปค์ง ์, ๋ฉ์ธ์ง๋ฅผ ๋์ฐ๊ณ 4๊ฐ ์ด์์ ๋ฒํผ์ด ๋๋ ค์ง์ง ์๋๋ก ๋๋ ค์ง ๋ฒํผ์ ์ํ๋ฅผ IsChecked = false๋ก ์ง์ ํด์ฃผ์ด ๋์ด์ ๋๋ฆฌ์ง ์๋๋ก ํด์ค๋๋ค. ์ด๋, sender๋ฅผ ToggleButton์ผ๋ก ํ ๋ณํ(Type Casting)์ ์์ผ์ค์ผ ํฉ๋๋ค. ToggleButton_UnChecked์์๋ cnt -=1์ ํด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ xaml์์ ๊ฐ๊ฐ์ ToggleButton์ Checked ๋์์ ๋๋ ToggleButton_Checked๊ฐ, UnChecked ๋์์ ๋๋ ToggleButton_UnChecked๊ฐ ์คํ๋๋๋ก ์์ฑ์ ์ถ๊ฐํด์ค๋๋ค.
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 | <Window.Resources> <Style TargetType="{x:Type ToggleButton}"> <Setter Property="FontFamily" Value="ํด๋ฉด์ค๊ฐ์์ฒด"/> <Setter Property="FontSize" Value="20"/> <Setter Property="Background" Value="#FFB4C4EA"/> <Setter Property="BorderBrush" Value="#00FF0000"/> <Setter Property="Width" Value="156"/> <Setter Property="Height" Value="125"/> <Style.Resources> <Style TargetType="{x:Type Border}"> <Setter Property="CornerRadius" Value="15"/> </Style> </Style.Resources> </Style> </Window.Resources> <Grid> <Label x:Name="lbl" HorizontalAlignment="Left" Height="59" Margin="668,36,0,0" VerticalAlignment="Top" Width="93" FontSize="30" FontFamily="/WpfApp1;component/Font/#KNPS Kkomi" BorderBrush="#FF070707" BorderThickness="2" Content="" FlowDirection="RightToLeft"/> <ToggleButton x:Name="toggleBtn1" HorizontalAlignment="Left" Margin="63,58,0,0" VerticalAlignment="Top" Checked="ToggleButton_Checked" Unchecked="ToggleButton_UnChecked"/> <ToggleButton x:Name="toggleBtn2" HorizontalAlignment="Left" Margin="249,58,0,0" VerticalAlignment="Top" Checked="ToggleButton_Checked" Unchecked="ToggleButton_UnChecked"/> <ToggleButton x:Name="toggleBtn3" HorizontalAlignment="Left" Margin="442,58,0,0" VerticalAlignment="Top" Checked="ToggleButton_Checked" Unchecked="ToggleButton_UnChecked"/> <ToggleButton x:Name="toggleBtn4" HorizontalAlignment="Left" Margin="63,250,0,0" VerticalAlignment="Top" Checked="ToggleButton_Checked" Unchecked="ToggleButton_UnChecked"/> <ToggleButton x:Name="toggleBtn5" HorizontalAlignment="Left" Margin="249,250,0,0" VerticalAlignment="Top" Checked="ToggleButton_Checked" Unchecked="ToggleButton_UnChecked"/> <ToggleButton x:Name="toggleBtn6" HorizontalAlignment="Left" Margin="442,250,0,0" VerticalAlignment="Top" Checked="ToggleButton_Checked" Unchecked="ToggleButton_UnChecked"/> </Grid> </Window> | cs |
ํ๋ก๊ทธ๋จ์ ์คํํด๋ณด๋ฉด ๋ฒํผ์ 4๊ฐ ์ด์ ๋๋ฅด๋ ค๊ณ ํ ๋ ๋ฉ์ธ์ง๊ฐ ์ ์์ ์ผ๋ก ๋จ๋ ๊ฒ๊ณผ ๋์ด์ ๋ฒํผ์ด ๋๋ฆฌ์ง ์๋ ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค.
'Language > C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C#/WPF] ํ์ ๋ฉ์ธ์ง ๋์ฐ๊ธฐ (0) | 2023.02.01 |
---|---|
[C#/WPF] ๋ฒํผ ๋ชจ์๋ฆฌ ๋ฅ๊ธ๊ฒ ๋ง๋ค๊ธฐ (0) | 2023.01.30 |
[C#/WPF] ํ์ฌ ๋ ์ง์ ์๊ฐ ํ์ํ๊ธฐ (0) | 2023.01.27 |
[C#/WPF] ์ธ๋ถ ํฐํธ ์ ์ฉํ๊ธฐ (0) | 2023.01.27 |