(C# WPF) 텍스트박스 변경시 또 다른 텍스트 변경

홍영주 (PolyglotMan)·2021년 10월 17일
0

회사에서 프로그래밍을 C#, Linux, C++ 관련한 프로그래밍을 할 듯하여. C# 공부차 WPF 간단한 프로그램을 만들어보면서 공부하는 중이다.

주제

  • TextBox에 텍스트를 입력할 때 마다 텍스트 Block이 똑같이 변경되는 간단한 프로그램

코드

  • MainWindow.xaml

<Window x:Class="TextInputOutput.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:TextInputOutput"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="858">
    <Grid>
        <Border BorderThickness="1" BorderBrush="Black"/>
        <TextBox x:Name="textBox" HorizontalAlignment="Left" Margin="296,161,0,0" Text="TextBox" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" TextChanged="TextBox_TextChanged"/>
        <TextBlock x:Name="TextString" HorizontalAlignment="Left" Margin="459,163,0,0" Text="Dd" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>

    </Grid>
</Window>
  • MainWindow.xaml.cs
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 TextInputOutput
{
	/// <summary>
	/// Interaction logic for MainWindow.xaml
	/// </summary>
	public partial class MainWindow : Window
	{

		#region 생성자 - MainWindow()
		public MainWindow()
		{
			InitializeComponent();

			TextString.Text = "Hello Buddy!";

			this.textBox.TextChanged += TextBox_TextChanged;
		}

		#endregion

		#region 텍스트 박스가 변경되었을 때 처리하기.

		//<summary>
		// 텍스트 박스 텍스트 변경시 TextString 변경
		// </summary>
		
		private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
		{
			//null 체크를 안하면 오류가 발생 왜??? -> 이 함수를 읽을 때는 TextString이라는 객체가 없어서..
			if(TextString != null)
			{
				TextString.Text = textBox.Text;
			}
			
		}

		#endregion
	}
}

느낀점

  • 먼저 느꼈던 점이. TextString ≠ null 처럼 null 체크를 해줘야된다는 것이다.
  • 만약 안해주면 객체가 null이라는 오류가 발생하더라...
  • 그리고 C# 에서는 #region 이라는 방법으로 소스코드를 간단하게 분류하는 기능이 있는 것 같다.
  • 이 기능을 요긴하게 쓰면 코드 정리할 때 좋을 듯 ㅎㅎ..
profile
안녕하세요~

0개의 댓글