2014-09-07 4 views
-1

사용자가 닫기 단추를 클릭 할 때 파일을 저장하거나 변경 내용을 취소하거나 RichTextBox 내용이 변경된 경우 되돌아 가도록 요청하고 싶습니다. Windows 메모장 또는 다른 텍스트 편집기와 마찬가지입니다. 내가 어떻게 할 수 있니?richtextbox 내용이 변경된 경우 프로그램 종료시 변경 사항 취소 무시

+1

대 :

이 사소한 예입니다. 그렇게해라. 너는 우리의 승인을 얻었다. – nvoigt

+1

지금까지 시도한 것을 보여주십시오. 우리가 해결하도록 도와 드리겠습니다. –

+0

검색을 시도했지만 작동하지 않는 항목이 없습니다. 그것은 단순히 작동하지 않았습니다. 아무도 이런 종류의 질문을하지 않은 것 같습니다. 텍스트 상자 내용이 변경된 경우에만 팝업되기를 원하기 때문입니다. – XeZrunner

답변

1

read about events이 필요하며 어떻게 작동해야합니까? 이 경우 RichTextBoxTextChanged 이벤트와 해당 양식의 FormClosing 이벤트에 관심이 있습니다.

TextChanged Event : MSDN

텍스트 박스의 내용이 변경 될 때마다 이벤트가 발생 TextChanged된다. 텍스트 상자의 변경 내용을 추적하는 한 가지 방법은 단순히 부울 값을 사용하는 것입니다. 텍스트 상자에 데이터를로드 할 때 반드시 false으로 설정하십시오. 그런 다음 사용자가 텍스트를 변경하면 TextChanged 이벤트가 발생하고 _textChanged (아래 예에서) 값을 true으로 설정할 수 있습니다.

마찬가지로, FormClosing 이벤트를 사용하면 양식을 닫으려고하는 사용자에게 반응 할 수 있습니다.

FormClosing Event : MSDN

이 이벤트는 폼의 폐쇄 취소 할 수있는 FormClosingEventArgse (사용자가 텍스트에 대해 프롬프트되면 취소 선택하면,이 경우에 변경된 된)을 통과한다. 양식이 닫히기 전에 다른 작업을 수행 할 수도 있습니다.

메시지 대화 상자를 만들려면 MessageBox.Show의 적절한 오버로드를 사용할 수 있습니다.이 함수는 사용자가 클릭 한 버튼을 나타내는 DialogResult을 반환합니다. 이를 통해 사용자가 선택한 항목에 따라 다른 작업을 수행 할 수 있습니다.

MessageBox.Show : MSDN

당신이 이러한 이벤트를 연결하는 방법을 모르는 경우

, 그럼 난 당신을 통해의 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 
     } 
    } 
}