2014-01-08 3 views
0

다른 이벤트에서 하나의 이벤트를 사용해야합니다. 나는 초보자이며 어떻게해야할지 모른다. 두 번째 이벤트에서 첫 번째 이벤트를 사용하고 싶습니다.하나의 이벤트를 다른 이벤트에서 사용하는 방법

// 퍼스트 이벤트

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
    saveFileDialog1.Filter = "Text Document(*.txt)|*.txt|All files(*.*)|"; 
    if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     using (Stream s = File.Open(saveFileDialog1.FileName, FileMode.CreateNew)) 
     using (StreamWriter sw = new StreamWriter(s)) 
     { 
      sw.Write(textBox1.Text); 
     } 
    } 

} 

// 번째 이벤트

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    DialogResult rezult = MessageBox.Show("Sunteti sigur ca doriti sa iesiti din program !?", 
     "Aplication closing", MessageBoxButtons.YesNoCancel); 
    if (rezult == DialogResult.Yes) 
    { 
     //I want to use first event in this if,please help me; 
     e.Cancel = false; 
    } 
    else if (rezult == DialogResult.No) 
    { 
     e.Cancel = false; 
    } 
    else 
     e.Cancel = true; 
} 
+1

기능을 별도의 함수로 추출하고 두 이벤트 핸들러에서 호출하십시오. – Styxxy

+0

나는 그것을 잘 설명하지 못한다. 나는 두 가지 이벤트에서 같은 코드를 사용하지 않기를 바랬다. 내 앱을 닫아서 저장하고 싶었다.하지만 나는이 코드로 하나의 이벤트를 저장하고있다. 내 두 번째 이벤트에서 그를 호출 ... – user3142035

답변

7

이동 별도의 기능이 코드 다음 모두 이벤트 핸들러에서 해당 함수를 호출한다.

+0

의견 남자 – user3142035

+0

에 대 한 +1 멋진 논리에 대 한 ... – Rahul

3

Form1_FormClosing 메서드에서 this.saveAsToolStripMenuItem_Click(null, null)을 호출 할 수 있습니다 (매개 변수가 실제로 사용되지 않았기 때문에). 그러나, 나는 강하게 별도의 방법으로 논리를 저장 리팩토링과 같이, 적절한를 호출 권하고 싶습니다 : 오늘

private void Save() 
{ 
    SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
    saveFileDialog1.Filter = "Text Document(*.txt)|*.txt|All files(*.*)|"; 
    if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     using (Stream s = File.Open(saveFileDialog1.FileName, FileMode.CreateNew)) 
     using (StreamWriter sw = new StreamWriter(s)) 
     { 
      sw.Write(textBox1.Text); 
     } 
    } 
} 

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    this.Save(); 
} 

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    DialogResult rezult = MessageBox.Show("Sunteti sigur ca doriti sa iesiti din program !?", 
     "Aplication closing", MessageBoxButtons.YesNoCancel); 
    if (rezult == DialogResult.Yes) 
    { 
     this.Save(); 
     e.Cancel = false; 
    } 
    else if (rezult == DialogResult.No) 
    { 
     e.Cancel = false; 
    } 
    else 
     e.Cancel = true; 
    } 
} 
+0

완료, 당신의 대답을 주셔서 감사합니다 – user3142035

0

, 그냥이

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    DialogResult rezult = MessageBox.Show("Sunteti sigur ca doriti sa iesiti din program !?", 
     "Aplication closing", MessageBoxButtons.YesNoCancel); 
    if (rezult == DialogResult.Yes) 
    { 
     // call other event handler as a function, for it is one 
     saveAsToolStripMenuItem_Click(null, null); 

     e.Cancel = false; 
    } 
    else if (rezult == DialogResult.No) 
    { 
     e.Cancel = false; 
    } 
    else 
     e.Cancel = true; 
} 
같은 함수로 첫 번째 전화

내일/문서 /보기, 모델 /보기/컨트롤러, 모델 /보기/ViewModel에 대한 블로그/책/기사를 읽으십시오.

+0

완료, 대답 주셔서 감사합니다 – user3142035

관련 문제