티스토리 뷰
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 |