공학속으로/C#

c# 텍스트박스(TextBox) 에디트박스 사용법 정리

더월드 2023. 4. 2.

Windows Forms 텍스트 상자는 사용자로부터 입력을 받거나 텍스트를 표시하는 데 사용됩니다. 

TextBox 컨트롤은 일반적으로 편집 가능한 텍스트에 사용되지만 읽기 전용으로 만들 수도 있습니다.

텍스트 상자는 여러 줄을 표시하고, 텍스트를 컨트롤 크기로 줄 바꿈하고, 기본 서식을 추가할 수 있습니다. 

TextBox 컨트롤은 컨트롤에 표시되거나 입력된 텍스트에 대한 단일 형식을 허용합니다.

 

C#에서 에디트 박스(또는 텍스트 박스)를 사용방법


1. Visual Studio 또는 다른 개발 환경을 열고 새로운 프로젝트를 생성합니다.
2. Windows Forms 애플리케이션 프로젝트를 선택하고 이름을 지정한 후, 프로젝트를 생성합니다.
3. 디자인 화면에서 텍스트 박스 컨트롤을 폼에 추가합니다. 텍스트 박스는 폼 도구 상자에서 찾을 수 있습니다.
4. 텍스트 박스를 선택한 상태에서 속성 창을 열고, 속성을 변경하여 원하는 형식으로 사용할 수 있습니다. 일반적으로 Text 속성을 사용하여 텍스트 값을 설정하고 가져올 수 있습니다.
5. 코드 화면으로 전환하여 텍스트 박스에 대한 이벤트 핸들러나 기능을 구현합니다. 이벤트 핸들러를 추가하려면 텍스트 박스를 더블 클릭하거나, 코드에서 직접 이벤트를 구독할 수 있습니다.

아래는 간단한 예제입니다:

using System;
using System.Windows.Forms;

namespace TextBoxExample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            // 텍스트가 변경될 때마다 이벤트 핸들러가 실행됩니다.
            // 여기서 원하는 동작을 수행할 수 있습니다.
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 버튼이 클릭되었을 때 텍스트 박스의 값을 가져오는 예제입니다.
            string textValue = textBox1.Text;
            MessageBox.Show("입력된 텍스트: " + textValue);
        }
    }
}

이 예제에서는 텍스트 박스의 TextChanged 이벤트 핸들러와 버튼의 Click 이벤트 핸들러를 구현하였습니다. 텍스트가 변경될 때마다 텍스트 박스의 값을 가져오고, 버튼이 클릭되면 해당 값을 메시지로 출력합니다. 이와 같은 방식으로 텍스트 박스를 사용하여 사용자 입력을 받고 처리할 수 있습니다.

 

텍스트 박스 속성

 

○ 읽기만 가능

textBox1.ReadOnly=true;

 

○ 패스워드 형태(*표 형태로 속성 변경)로 표시하기

if(checkBox1.checked == false)
{
	textBox1.PasswordChar ='*';
}
else
{
	textBox1.PasswordChar = default(char);
}

 

 

○ 텍스트 박스에 큰따옴표 넣기

방법1) Visual Basic에서 행에서 두 개의 따옴표를 중첩된 따옴표로 삽입합니다. C# 및 Microsoft Visual C++에서 이스케이프 시퀀스 \"를 중첩된 따옴표로 삽입합니다. 예를 들어 위의 문자열을 만들려면 다음 코드를 사용합니다.

private void InsertQuote(){  
   textBox1.Text = "She said, \"You deserve a treat!\" ";  
}

방법2) 따옴표에 대한 ASCII 또는 유니코드 문자를 삽입합니다. Visual Basic에서 ASCII 문자(34)를 사용합니다. Visual C#에서 유니코드 문자(\u0022)를 사용합니다.

private void InsertAscii(){  
   textBox1.Text = "She said, " + '\u0022' + "You deserve a treat!" + '\u0022';  
}

방법3) 문자에 대한 상수를 정의하고 필요한 부분에 사용할 수도 있습니다.

const string quote = "\"";  
textBox1.Text = "She said, " + quote +  "You deserve a treat!"+ quote ;

 

 

Windows Forms TextBox 컨트롤에서 텍스트 선택

Windows Forms TextBox 컨트롤에서 프로그래밍 방식으로 텍스트를 선택할 수 있습니다. 예를 들어 특정 문자열에 대한 텍스트를 검색하는 함수를 만드는 경우 텍스트를 선택하여 찾은 문자열의 위치를 판독기에 시각적으로 알릴 수 있습니다.

 

프로그래밍 방식으로 텍스트를 선택하려면

1. SelectionStart 속성을 선택하려는 텍스트의 시작 부분으로 설정합니다.

    SelectionStart 속성은 텍스트 문자열 내의 삽입 지점을 나타내는 숫자이며, 0은 가장 왼쪽 위치입니다.

    SelectionStart 속성이 텍스트 상자의 문자 수보다 크거나 같은 값으로 설정되면 삽입 지점은 마지막 문자 뒤에 배치됩니다.

 

2. SelectionLength 속성을 선택하려는 텍스트의 길이로 설정합니다.

    SelectionLength 속성은 삽입 지점의 너비를 설정하는 숫자 값입니다. SelectionLength를 0보다 큰 숫자로 설정하면

    현재 삽입 지점에서 시작하여 해당 수의 문자가 선택됩니다.

 

3. (선택 사항) SelectedText 속성을 통해 선택한 텍스트에 액세스합니다.

아래 코드는 컨트롤의 Enter 이벤트가 발생할 때 텍스트 상자의 콘텐츠를 선택합니다. 다음 예제는 텍스트 상자에 Text 속성 값이 null 또는 빈 문자열이 아닌지 확인합니다. 텍스트 상자가 포커스를 받으면 텍스트 상자의 현재 텍스트가 선택됩니다. TextBox1_Enter 이벤트 처리기는 컨트롤에 바인딩되어야 합니다. 자세한 내용은 방법: 런타임에 Windows Forms에 대한 이벤트 처리기 만들기를 참조하세요.

private void textBox1_Enter(object sender, System.EventArgs e){  
   if (!String.IsNullOrEmpty(textBox1.Text))  
   {  
      textBox1.SelectionStart = 0;  
      textBox1.SelectionLength = textBox1.Text.Length;  
   }  
}

 

숫자 , 알파벳만 입력 받는 코드

방법1). 해당 textBox1 선택 > 속성 창 > MaskType > 동작 > Numeric 선택

 

방법2). 코드로 처리

//------------------
// 숫자만 입력
//------------------
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)         
{
        //숫자만 입력되도록 필터링
        //숫자, 백스페이스를 제외한 나머지를 바로 처리
        if(!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))           
        {          
                e.Handled = true;             
        }         
}

//------------------
// 알파벳만 입력
//------------------
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)         
{
        // KeyChar가 'A'와 'Z' 사이에 속하지 않고, 'a'와 'z' 사이에도 속하지 않는다면 알파벳이 아님
		if(!('A' <= e.KeyChar && e.KeyChar <= 'Z') && !('a' <= e.KeyChar && e.KeyChar <= 'z'))
        {          
                e.Handled = true;             
        }         
}

 

// KeyChar가 'A'와 'Z' 사이에 속하지 않고, 'a'와 'z' 사이에도 속하지 않는다면 알파벳이 아님
if(!('A' <= e.KeyChar && e.KeyChar <= 'Z') && !('a' <= e.KeyChar && e.KeyChar <= 'z')) e.Handled = true;

 

 

1000단위에 컴마 찍기 예제

 

// 버튼1을 눌렀을때 실행
private void button1_Click(object sender,EventArgs e)
{
	int input_num;
	
	// textBox1에 입력된 내용을 int로 변환
	input_num = Convert.ToInt32(textBox1.Text); 
	
	// 1000단위 콤마, num을 문자열 변환
	string str =string.Format("{0:#,###}", input_num) 
	
	// 문자열 str을 메시지박스로 표시
	textBox1.Text = str;
}

string oldValue = "";
private void textBox1_TextChanged(object sender, EventArgs e)
{
	// 숫자만 처리
	if(double.tryParse(str, result_num))
	{
		textBox1.Text = string.Format("{0:#,##0}", );
		textBox1.SelectionStart = textbox1.TextLength;
		textBox1.selectionLength = 0;
	}
	else
	{
		// 숫자 아니면 이전값
		textBox1.Text =oldValue;
	}
	oldValue = textBox1.Text; // 현재값을 저장
}

 

 

 

댓글

💲 추천 글