사용자 입력 또는 프로그래밍 방식으로 값을 변경하기 전에 텍스트 상자에 값을 가져 오는 데 문제가 있습니다.변경 전 값 가져 오기
나는이 이벤트가 _TextChanged
이벤트와 관련이 있다는 것을 알았지 만 일단 이것이 실행되면 변경하기 전에 이미 있던 이전 값을 어떻게 얻습니까? 예 : 숫자 3
은 텍스트 필드에 있습니다. 번호가 4
으로 변경됩니다. 3
을 저장하려면 어떻게해야합니까?
미리 감사드립니다.
사용자 입력 또는 프로그래밍 방식으로 값을 변경하기 전에 텍스트 상자에 값을 가져 오는 데 문제가 있습니다.변경 전 값 가져 오기
나는이 이벤트가 _TextChanged
이벤트와 관련이 있다는 것을 알았지 만 일단 이것이 실행되면 변경하기 전에 이미 있던 이전 값을 어떻게 얻습니까? 예 : 숫자 3
은 텍스트 필드에 있습니다. 번호가 4
으로 변경됩니다. 3
을 저장하려면 어떻게해야합니까?
미리 감사드립니다.
TextBox
에는 아무 것도 저장하지 마십시오. value
을 표시/편집하는 경우에만 사용하십시오.
private string value;
private void textBox1_TextChanged(object sender, EventArgs e)
{
// at this moment value is still old
var oldValue = value;
value = ((TextBox)sender).Text; // text1.Text
// here you have oldValue and new value
}
어쩌면 당신은 각 TextChanged
후 value
를 업데이트하지 않습니다. 폼이 닫히거나 버튼이 눌릴 때 등등을 할 수 있습니다.
아이디어가 분명해야합니다. 이전 값이 필요하면 변수로 (Tag
)와 같이 어딘가에 저장하십시오. 응용 프로그램 설정, 내보내기 등).
또한 사용자가 어떻게 작동하는지주의하십시오. TextBox
에 3
이 포함 된 경우 사용자는 먼저 4
을 누른 다음 3
만 삭제할 수 있습니다. 또는 실수로 54
을 누를 수도 있습니다. 다음 중 어느 것입니까 값 : 3
, 34
, 54
? 의 이전 값인의 개념을 갖는 데서 발생할 수있는 문제점을 설명하기 만하면됩니다. 어쩌면 당신은 그것을 원하지 않을 것이고 당신이 낡은 가치를 얻음으로써 해결하고자하는 것에 더 좋은 해결책이 될 것입니다.
텍스트 변경 이벤트 중에 변수의 텍스트 상자에 현재 값을 저장하지 않는 이유는 무엇입니까? 이렇게하면 이벤트가 다시 시작될 때 "이전"값이됩니다.
일부 변수에 텍스트 상자의 값을 저장할 수 있습니다. 예 : 문자열 currentVal = txtName.Text;
문자열 currentVal은 text_changed 이벤트에서 이전 값으로 사용할 수 있습니다.
타이머를 만들려고 했습니까? 틱마다 입력을 문자열에 씁니다. 텍스트 상자의 입력 내용이 문자열의 내용과 같지 않으면 원하는 작업을 트리거합니다. 그렇게하면 이전 입력으로 무효화 할 수 있습니다.
private string oldInput;
....
void TimerTick(Object source, ElapsedEventArgs e)
{
if (oldInput != MyTextBox.Text) MyVoid(oldInput);
oldInput = MyTextBox.Text;
}
최고의 답변 지금까지 .. 내가 필요한 이유는 단추를 한 위치에서 다른 위치로 옮기고 단추가 이미있는 경우 바꾸려고하기 때문입니다. 그래서 나는 새로운 위치뿐만 아니라 이전 위치를 알아야합니다. 이것에 큰 어려움을 겪고 또 다른 질문을 게시 할 수 있습니다. 그러나 이것은 충분히 가까운 질문에 대한 답변입니다. 내가 끝낸 것은 이전 값을 저장하기 위해 '_Enter' 이벤트를 사용하는 것이었지만) – ravenx30
컨트롤이 포커스를 얻었을 때 이전 값을 저장하는 것이 좋습니다. 원한다면'_Leave'와'_KeyDown' ('Enter' 키를 누른 상태에서)을 사용하여 사용자 입력을 확인하는 * 방법이 있습니다. 그렇지 않은 경우 사용자가 '100'을 입력하면 '_TextChanged'를 사용하여 '1', '10'그리고 마지막으로 '100'위치에서 세 가지 작업을 수행합니다. 나는 디자이너의 속성 창은 그 개념을 사용하고 있다고 생각한다. ('Enter'또는 포커스 손실에 의한 입력을 확인하기 위해). – Sinatr
내 다음 질문 (훨씬 열심히)을 보면이 가치가 필요한 이유를 알 수 있습니다. – ravenx30