๐Ÿ‘ฉ๐Ÿป‍๐ŸŒพ

[C#/WPF] ToggleButton ๋ˆŒ๋ฆผ ๊ฐœ์ˆ˜ ์ œํ•œํ•˜๊ธฐ ๋ณธ๋ฌธ

Language/C#

[C#/WPF] ToggleButton ๋ˆŒ๋ฆผ ๊ฐœ์ˆ˜ ์ œํ•œํ•˜๊ธฐ

์ฅฌ์Šค์ด 2023. 2. 2. 22:48
728x90

 ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” 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๊ฐœ ์ด์ƒ ๋ˆ„๋ฅด๋ ค๊ณ  ํ•  ๋•Œ ๋ฉ”์„ธ์ง€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋œจ๋Š” ๊ฒƒ๊ณผ ๋”์ด์ƒ ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
Comments