728x90
반응형
728x170
▶ MainForm.cs
using System;
using System.Windows.Forms;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : Form
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 이벤트 무시 여부
/// </summary>
private bool ignoreEvent = false;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
#region 이벤트를 설정한다.
this.decimalTextBox.TextChanged += textBox_TextChanged;
this.hexadecimalTextBox.TextChanged += textBox_TextChanged;
this.octalTextBox.TextChanged += textBox_TextChanged;
this.binaryTextBox.TextChanged += textBox_TextChanged;
#endregion
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region 텍스트 박스 텍스트 변경시 처리하기 - textBox_TextChanged(sender, e)
/// <summary>
/// 텍스트 박스 텍스트 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void textBox_TextChanged(object sender, EventArgs e)
{
if(this.ignoreEvent)
{
return;
}
this.ignoreEvent = true;
TextBox sourceTextBox = sender as TextBox;
long value = 0;
try
{
switch(sourceTextBox.Name)
{
case nameof(decimalTextBox) : value = long.Parse(sourceTextBox.Text); break;
case nameof(hexadecimalTextBox) : value = Convert.ToInt64(sourceTextBox.Text, 16); break;
case nameof(octalTextBox) : value = Convert.ToInt64(sourceTextBox.Text, 8); break;
case nameof(binaryTextBox) : value = Convert.ToInt64(sourceTextBox.Text, 2); break;
default : throw new Exception("알 수 없는 컨트롤 입니다 : " + sourceTextBox.Name);
}
}
catch(Exception exception)
{
MessageBox.Show
(
"입력 문자열 파싱시 에러가 발생했습니다.\n\n" + exception.Message,
"에러",
MessageBoxButtons.OK,
MessageBoxIcon.Error
);
}
if(sourceTextBox.Name != nameof(decimalTextBox))
{
this.decimalTextBox.Text = value.ToString();
}
if(sourceTextBox.Name != nameof(hexadecimalTextBox))
{
this.hexadecimalTextBox.Text = Convert.ToString(value, 16);
}
if(sourceTextBox.Name != nameof(octalTextBox))
{
this.octalTextBox.Text = Convert.ToString(value, 8);
}
if(sourceTextBox.Name != nameof(binaryTextBox))
{
this.binaryTextBox.Text = Convert.ToString(value, 2);
}
this.ignoreEvent = false;
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] CPU 부하 생성하기 (0) | 2018.12.21 |
---|---|
[C#/COMMON] 파스칼/카멜 표기법 사용하기 (0) | 2018.12.13 |
[C#/COMMON] Clipboard 클래스 : 데이터 포맷 구하기 (0) | 2018.12.11 |
[C#/COMMON] Clipboard 클래스 : 멀티 포맷 사용하기 (0) | 2018.12.11 |
[C#/COMMON] Clipboard 클래스 : 객체 사용하기 (0) | 2018.12.11 |
[C#/COMMON] 오일러의 체(Euler's Sieve)를 사용해 소수 구하기 (0) | 2018.12.09 |
[C#/COMMON] 에라토스테네스의 체(Sieve of Eratosthenes)를 사용해 소수 구하기 (0) | 2018.12.09 |
[C#/COMMON] TimeZoneInfo 클래스 : GetSystemTimeZones 정적 메소드를 사용해 표준 시간대 나열하기 (0) | 2018.12.08 |
[C#/COMMON] 스레드 안전 우선 순위 큐 사용하기 (0) | 2018.12.07 |
[C#/COMMON] 스레드 안전 리스트/리스트 큐 사용하기 (0) | 2018.12.06 |
댓글을 달아 주세요