private void Form3_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
 if(IsChanged==true)
  {
     if(MessageBox.Show ("The Data Have Been Changed,Do You Want To Saving It?", "My CommunicationBook",MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) ==DialogResult.Yes)
{
UpdateDatasource(gridControl1);//但关键的问题在这里,它总是不能实现,难道要在Closed的时候触发吗/
}
}
}
后来我在Closed里面实现:
private void Form3_Closed(object sender, System.EventArgs e)
{
if(IsChanged==true)
{
if(MessageBox.Show ("The Data Have Been Changed,Do You Want To Saving It?", "My CommunicationBook",MessageBoxButtons.YesNo , MessageBoxIcon.Asterisk) == DialogResult.Yes 
{
UpdateDatasource(gridControl1);
          }
}
}
问题依然,再后来:
protected override void Dispose( bool disposing )
{
     if( disposing )
{
if(IsChanged==true)
{
if(MessageBox.Show ("The Data Have Been Changed,Do You Want To Saving It?", "My CommunicationBook",MessageBoxButtons.YesNo , MessageBoxIcon.Asterisk) == DialogResult.Yes 
                        {
UpdateDatasource(gridControl1);//终于找到地方能执行了,但Close那里为什么不能执行呢?
IsChanged=false;
}
}//不过这里又有问题了,点YES能保存,点NO的时候就一直重复显示对话框
 //昏,现在点YES也是老重复显示!!!!!!!!!!不过最后还是能保存的,就 是要多点几下,郁闷
if(components != null)
   {
components.Dispose();
    }
}
base.Dispose( disposing );
}
以上是我放在3个不同地方的MessageBox.Show(),只有最后一个还算是成功了,但问题如上描述,请问为什么!!!