티스토리 뷰

C#

9 WPF

김윤지. 2023. 4. 27. 18:00

005_Language(체크박스)

<xaml 코드>

<Window x:Class="_005_Language.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:_005_Language"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="300"
        Background="LightSteelBlue">
    <StackPanel Margin="20" Background="AliceBlue">
        <TextBlock HorizontalAlignment="Center">좋아하는 프로그래밍 언어는?</TextBlock>
        <Separator Background="SteelBlue" Margin="10"/>
        <CheckBox x:Name="cbC" Margin="30 5 0 0">C</CheckBox>
        <CheckBox x:Name="cbCPP" Margin="30 10 0 0">C++</CheckBox>
        <CheckBox x:Name="cbCS" Margin="30 10 0 0">C#</CheckBox>
        <CheckBox x:Name="cbPy" Margin="30 10 0 0">Python</CheckBox>
        <CheckBox x:Name="cbJava" Margin="30 10 0 0">JAVA</CheckBox>
        <Separator Background="SteelBlue" Margin="10"/>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
            <Button x:Name="btnSubmit" Margin="10 10 5 0" Padding="5" Width="70" Click="btnSubmit_Click">투표하기</Button>
            <Button x:Name="btnExit" Margin="10 10 5 0" Padding="5" Width="70" Click="btnExit_Click">끝내기</Button>
        </StackPanel>
    </StackPanel>
</Window>

StackPanel 배치

텍스트블록 가운데 정렬 "좋아하는 프로그래밍 언어는?"

구분선

각 요소를 담은 체크박스 배치

구분선

StackPanel 가로 배치, 가운데 정렬

    2개의 투표, 끝내기 버튼 배치

 

<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 _005_Language
{
    public partial class MainWindow : Window
    {
        CheckBox[] cbs;
        public MainWindow()
        {
            InitializeComponent();
            cbs = new CheckBox[] { cbC, cbCPP, cbCS, cbPy, cbJava };
        }

        private void btnSubmit_Click(object sender, RoutedEventArgs e)
        {
            string str = string.Empty;  //""

            foreach (var cb in cbs)
            {
                if (cb.IsChecked == true)
                    str += cb.Content + " ";
            }
            MessageBox.Show(str + "selected!", "Langauge Preferred");
        }

        private void btnExit_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
    }
}

체크박스 배열 cbs를 선언하고 초기화 시키기

비어있는 문자열 str을 만들고

cbs 배열 안의 요소 cb에 대해서

만약 cb가 체크되어있다면 str에 cb의 콘텐츠 추가

메시지박스 띄우기

 

끝내기 버튼을 눌러 window 종료

 

 

006_UserControl

 DockPanel : 자식 요소에 사용 가능한 공간을 분할, 하위 요소를 상하/좌우 등 원하는 방향으로 정렬하는 레이아웃 패널

<xaml 코드>

<Window x:Class="_006_UserControl.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:_006_UserControl"
        mc:Ignorable="d"
        Title="MainWindow" Height="430" Width="500">
    <DockPanel LastChildFill="True">
        <TextBlock DockPanel.Dock="Top" HorizontalAlignment="Center"
                   FontSize="20" FontWeight="Bold"
                   Margin="20 20 20 0">Color Test</TextBlock>
        <StackPanel DockPanel.Dock="Top" Orientation="Horizontal"
                    HorizontalAlignment="Center">
            <Button x:Name="btnRed" Margin="20" HorizontalAlignment="Center"
                    MinWidth="50" MinHeight="50" Click="btnRed_Click">
                <StackPanel>
                    <Rectangle Fill="Red" MinWidth="25" MinHeight="25"/>
                    <TextBlock HorizontalAlignment="Center">Red</TextBlock>
                </StackPanel>
            </Button>
            <Button x:Name="btnGreen" Margin="20" HorizontalAlignment="Center"
                    MinWidth="50" MinHeight="50" Click="btnGreen_Click">
                <StackPanel>
                    <Rectangle Fill="Green" Width="25" MinHeight="25"/>
                    <TextBlock HorizontalAlignment="Center">Green</TextBlock>
                </StackPanel>
            </Button>
            <Button x:Name="btnBlue" Margin="20" HorizontalAlignment="Center"
                    MinWidth="50" MinHeight="50" Click="btnBlue_Click">
                <StackPanel>
                    <Rectangle Fill="Blue" MinWidth="25" MinHeight="25"/>
                    <TextBlock HorizontalAlignment="Center">Blue</TextBlock>
                </StackPanel>
            </Button>
        </StackPanel>
        <Button DockPanel.Dock="Bottom" x:Name="btnColor" Margin="30 0 30 30"
                MinWidth="300" MinHeight="200"
                Background="AliceBlue" Click="btnColor_Click">Click to Close!</Button>
          
    </DockPanel>
</Window>

DockPanel LastChildFill = True

> 마지막 자식 요소가 DockPanel 내부 공간을 모두 차지

 

Color Test 텍스트블록을 독패널의 상단에 중앙정렬로 배치 

가로로 배치되는 스택패널을 독패널 상단에 중앙정렬로 배치

스택패널 자식으로 3개의 버튼

각 버튼의 자식으로 스택패널, 그 스택패널의 자식으로 랙탱글(사각형 요소)과 텍스트블록으로 색 표시

 

close 버튼을 독패널의 하단에 위치하도록 추가

 

<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 _006_UserControl
{
    public partial class MainWindow : Window
    {
        public MainWindow()
            InitializeComponent();

        private void btnColor_Click(object sender, RoutedEventArgs e)
            this.Close();

        private void btnRed_Click(object sender, RoutedEventArgs e)
            btnColor.Background = Brushes.Red;

        private void btnGreen_Click(object sender, RoutedEventArgs e)
            btnColor.Background = Brushes.Green;

        private void btnBlue_Click(object sender, RoutedEventArgs e)
            btnColor.Background = Brushes.Blue;
    }
}

각 버튼을 표시했을 때 btnColor의 색을 변경하고 close 버튼으로 window 종료

'C#' 카테고리의 다른 글

11 SQL 설치  (0) 2023.05.17
10 WPF  (0) 2023.05.11
8 WPF  (0) 2023.04.26
7 TwoForms  (0) 2023.04.19
6 Firebase  (0) 2023.04.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
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
글 보관함