사용자가 닫기 단추를 클릭 할 때 파일을 저장하거나 변경 내용을 취소하거나 RichTextBox 내용이 변경된 경우 되돌아 가도록 요청하고 싶습니다. Windows 메모장 또는 다른 텍스트 편집기와 마찬가지입니다. 내가 어떻게 할 수 있니?richtextbox 내용이 변경된 경우 프로그램 종료시 변경 사항 취소 무시
-1
A
답변
1
read about events이 필요하며 어떻게 작동해야합니까? 이 경우 RichTextBox
의 TextChanged
이벤트와 해당 양식의 FormClosing
이벤트에 관심이 있습니다.
텍스트 박스의 내용이 변경 될 때마다 이벤트가 발생 TextChanged
된다. 텍스트 상자의 변경 내용을 추적하는 한 가지 방법은 단순히 부울 값을 사용하는 것입니다. 텍스트 상자에 데이터를로드 할 때 반드시 false
으로 설정하십시오. 그런 다음 사용자가 텍스트를 변경하면 TextChanged
이벤트가 발생하고 _textChanged
(아래 예에서) 값을 true
으로 설정할 수 있습니다.
마찬가지로, FormClosing
이벤트를 사용하면 양식을 닫으려고하는 사용자에게 반응 할 수 있습니다.
이 이벤트는 폼의 폐쇄 취소 할 수있는 FormClosingEventArgs
값 e
(사용자가 텍스트에 대해 프롬프트되면 취소 선택하면,이 경우에 변경된 된)을 통과한다. 양식이 닫히기 전에 다른 작업을 수행 할 수도 있습니다.
메시지 대화 상자를 만들려면 MessageBox.Show
의 적절한 오버로드를 사용할 수 있습니다.이 함수는 사용자가 클릭 한 버튼을 나타내는 DialogResult
을 반환합니다. 이를 통해 사용자가 선택한 항목에 따라 다른 작업을 수행 할 수 있습니다.
당신이 이러한 이벤트를 연결하는 방법을 모르는 경우
, 그럼 난 당신을 통해의 ome of the basic documentation and examples을 읽으십시오. 이것은 C#에서 수행되는 많은 작업을 이해하는 데 필요한 초보자 용 요소입니다. 여기에 나와있는 예제는 다르게 지정하지 않았으므로 winforms입니다.public partial class Form1 : Form
{
private bool _textChanged;
public Form1()
{
InitializeComponent();
// load data to richtextbox, then ....
_textChanged = false;
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
_textChanged = true;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (_textChanged)
{
DialogResult rslt = MessageBox.Show("save changes?", "some caption",
MessageBoxButtons.YesNoCancel);
if (rslt == DialogResult.Yes)
{
// save changes and exit
}
else if (rslt == DialogResult.Cancel)
{
e.Cancel = true;
// cancel close, return to form
}
// else do not save and continue closing form
}
}
}
대 :
이 사소한 예입니다. 그렇게해라. 너는 우리의 승인을 얻었다. – nvoigt
지금까지 시도한 것을 보여주십시오. 우리가 해결하도록 도와 드리겠습니다. –
검색을 시도했지만 작동하지 않는 항목이 없습니다. 그것은 단순히 작동하지 않았습니다. 아무도 이런 종류의 질문을하지 않은 것 같습니다. 텍스트 상자 내용이 변경된 경우에만 팝업되기를 원하기 때문입니다. – XeZrunner