안녕하세요, 오늘은 포커스에 대해 알아보고 윈도우 앱에서 포커스를 다루는 법을 배워보겠습니다.
일단 포커스란 현재 사용자가 입력을 받을 수 있는 컨트롤을 가리킵니다.
컨트롤은 윈도우 앱에서 폼을 구성하는 하나의 구성요소입니다.
예를 들어 구글 웹페이지로 이동하면 화면 중앙에 검색창이 있죠.
이 때 이 검색창을 클릭하게 되면 다음과 같이 검색창이 클릭되고 포커스를 갖게 되는데 여기서 검색창의 입력칸이 하나의 컨트롤이라고 생각할 수 있습니다.
이렇게 하나의 컴포넌트가 포커스를 받게 되면 사용자가 구분할 수 있고 그 다음 사용자의 입력이 포커스와 연관될 것이라고 사용자는 예상할 수 있습니다. 이렇듯 포커스는 사용자 경험 향상을 위해 중요한 요소입니다.
그리고 웹페이지 외에도 안드로이드 앱, 윈도우 앱, ios 등 포커스는 대부분의 프로그램에서 사용되고 이것을 자유자재로 다루고 사용자의 편의를 위해 적절한 위치에 포커스를 주는 것도 개발자의 일이라고 볼 수 있습니다.
그래서 오늘은 윈도우 앱에서 포커스를 주고 없애고 변경하는 법을 알아보겠습니다.
방법은 다음과 같습니다.
// 'Control.Focus' 메서드는 호출된 컨트롤에 포커스를 요청합니다.
button1.Focus(); // button1에 포커스를 요청
// 현재 사용하고 있는 폼의 ActiveControl 속성을 사용해 포커스를 가질 컨트롤을 지정합니다.
this.ActiveControl = textBox1; // textBox1을 포커스를 가질 컨트롤로 지정
이 2가지 방법을 사용해 이전에 만든 예제를 활용해 포커스를 줘보도록 하겠습니다.
https://stickode.tistory.com/1132
숫자버튼과 연산자 버튼을 클릭할 때 이전에 버튼에 남아있던 포커스를 제거해보겠습니다.
// 숫자 버튼 클릭 메소드
private void NumBtn_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
string inputNum = btn.Text.ToString();
textBox1.Text += inputNum;
if (num1turn)
{
num1 += inputNum;
}
else
{
num2 += inputNum;
}
if(operation != '\0')
{
lastOperation = operation;
operation = '\0';
}
this.ActiveControl = null; // 포커스를 제거
}
// 연산자 버튼 클릭 메소드
private void OperationBtn_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
if (String.IsNullOrEmpty(num1))
{
}
else
{
}
if (operation == '\0')
{
operation = btn.Text[0];
textBox1.Text += operation;
if (num1turn)
{
num1turn = false;
}
}
else
{
textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);
operation = btn.Text[0];
textBox1.Text += operation;
}
this.ActiveControl = null; // 포커스를 제거
}
그리고 = 버튼을 클릭했을 때 포커스를 텍스트 박스로 변경해보겠습니다.
// = 버튼 클릭 메소드
private void EquallBtn_Click(object sender, EventArgs e)
{
double result = 0;
if (num1.Length > 0 && num2.Length > 0)
{
switch (lastOperation)
{
case '+':
result = double.Parse(num1) + double.Parse(num2);
break;
case '-':
result = double.Parse(num1) - double.Parse(num2);
break;
case '*':
result = double.Parse(num1) * double.Parse(num2);
break;
case '/':
result = double.Parse(num1) / double.Parse(num2);
break;
}
}
num1 = textBox1.Text = result.ToString();
num2 = "";
num1turn = true;
textBox1.Focus(); // 포커스를 텍스트박스로 이동
}
이렇게 코드를 수정하면 달라진 결과를 확인할 수 있습니다.
감사합니다.
'C#' 카테고리의 다른 글
[C#][.NET] 이미지 뷰어 (0) | 2024.04.12 |
---|---|
[C#][.NET] MessageBox 사용법 (0) | 2024.04.03 |
[C#][.NET Core] 윈도우 계산기 앱 만들기 (0) | 2024.03.15 |
[C#][.NET Core] 윈도우 앱 개발환경 세팅 및 테스트 (2) | 2024.03.06 |
[C#][Unity] 여러 오브젝트를 합쳐 프리팹 만들기 (0) | 2023.08.23 |