목표
사용자가 TextBox 에 값 입력하기위해 마우스커서 올려놓았을때 자동으로 값이 Clear 되고
새로운 값을 입력하지 않은 채 커서를 옮기면 이전에 입력해놓은 값이 유지되는 기능
방법
1. 마우스 포인터가 컨트롤의 영역으로 들어왔을때 "" 값을 임의로 넣어준다.
2. TextBox 안의 내용에 변화를 감지하여 아무런 변화가 없다면 미리 저장해 놓은 이전의 값을 저장
xaml
<TextBox x:Name="tbx_Value1" Grid.Row="0" Grid.Column="1" Height="25" GotFocus="Tbx_Value1_GotFocus" LostFocus="Tbx_Value1_LostFocus" TextChanged="Tbx_Value1_TextChanged"/>
<TextBox x:Name="tbx_Value2" Grid.Row="1" Grid.Column="1" Height="25" GotFocus="Tbx_Value2_GotFocus" LostFocus="Tbx_Value2_LostFocus" TextChanged="Tbx_Value2_TextChanged"/>
<TextBox x:Name="tbx_Value3" Grid.Row="2" Grid.Column="1" Height="25" GotFocus="Tbx_Value3_GotFocus" LostFocus="Tbx_Value3_LostFocus" TextChanged="Tbx_Value3_TextChanged"/>
xaml.cs
public partial class TextboxEx_Window : Window
{
private ElementId LineId;
private Document doc;
string Value1 = "0";
string Value2 = "0";
string Value3 = "0";
public TextboxEx_Window(ExternalCommandData commandData, ElementId Id, Element element)
{
InitializeComponent();
LineId = Id;
doc = commandData.Application.ActiveUIDocument.Document;
SetValue();
}
private void SetValue()
{
tbx_Value1.Text = "0";
tbx_Value2.Text = "0";
tbx_Value3.Text = "0";
}
// TextBox 안의 내용에 변화가 생겼을때
private void Tbx_Value1_TextChanged(object sender, TextChangedEventArgs e)
{
if (tbx_Value1.Text == "0") return;
if (!Value1.Equals(tbx_Value1.Text) && !tbx_Value1.Text.Equals(""))
{ Value1 = tbx_Value1.Text; }
}
private void Tbx_Value2_TextChanged(object sender, TextChangedEventArgs e)
{
if (tbx_Value2.Text == "0") return;
if (!Value2.Equals(tbx_Value2.Text) && !tbx_Value2.Text.Equals(""))
{ Value2 = tbx_Value2.Text; }
}
private void Tbx_Value3_TextChanged(object sender, TextChangedEventArgs e)
{
if (tbx_Value3.Text == "0") return;
if (!Value3.Equals(tbx_Value3.Text) && !tbx_Value3.Text.Equals(""))
{ Value3 = tbx_Value3.Text; }
}
// textbox 가 클릭되었을때
private void Tbx_Value1_GotFocus(object sender, MouseEventArgs e)
{
if (tbx_Value2.Text.Equals("")) { tbx_Value2.Text = Value2; }
if (tbx_Value3.Text.Equals("")) { tbx_Value3.Text = Value3; }
tbx_Value1.Text = "";
}
private void Tbx_Value2_GotFocus(object sender, MouseEventArgs e)
{
if (tbx_Value1.Text.Equals("")) { tbx_Value1.Text = Value1; }
if (tbx_Value3.Text.Equals("")) { tbx_Value3.Text = Value3; }
tbx_Value2.Text = "";
}
private void Tbx_Value3_GotFocus(object sender, MouseEventArgs e)
{
if (tbx_Value1.Text.Equals("")) { tbx_Value1.Text = Value1; }
if (tbx_Value2.Text.Equals("")) { tbx_Value2.Text = Value2; }
tbx_Value3.Text = "";
}
// textbox 가 클릭되지 않았을때
private void Tbx_Value1_LostFocus(object sender, MouseEventArgs e)
{ if (tbx_Value1.Text == "") { tbx_Value1.Text = Value1; }}
private void Tbx_Value2_LostFocus(object sender, MouseEventArgs e)
{ if (tbx_Value2.Text == "") { tbx_Value2.Text = Value2; }}
private void Tbx_Value3_LostFocus(object sender, MouseEventArgs e)
{ if (tbx_Value3.Text == "") { tbx_Value3.Text = Value3; }}
}
반응형
'C#' 카테고리의 다른 글
[ WPF ] 초간단 IValueConverter 구현하기 ( Convert 기능 ) (0) | 2019.11.08 |
---|---|
[ WPF ] 초간단 INotifyPropertyChanged 구현하기 (2) | 2019.11.07 |
[ WPF ] Visibility Visible / Hidden 보이기/숨기기 (0) | 2019.06.28 |
[ C# 오류 ] Null Reference Exception : object reference not set to an instance of an object 오류 (0) | 2019.05.17 |
[WPF] Excel 파일 읽어서 Datagrid 에 넣기 : Excel Import (0) | 2019.05.15 |