由于操作员疏忽关闭系统时,程序没有关闭也没有单击“保存”按钮进行数据保存,而导致数据丢失,请问如何实现关闭系统时,自动单击所有程序的保存按钮之后,再关闭系统。

解决方案 »

  1.   

    在form_closeing事件里实现。
      

  2.   

    不用form_closeing怎么实现,要是很多窗口都有保存按钮,每个都要写一遍很麻烦而且重复劳动。谢谢上面的兄弟!
      

  3.   

    能不能把save_close()
    事件委托给form的close事件呀
      

  4.   

    我现在是有两个程序A.exe和B.exe,同时打开。当关闭程序A时,自动点击程序B的保存按钮?请问如何实现?
      

  5.   

    我也遇到这种情况:以前用system suite版本在debug模式下(release下没有试)编译成功的程序,
    改装vs2005 专业版后在release下编译成功,而在debug下却出错,如下:错误 1 fatal error C1853: “Debug\test.pch”预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反) g:\My Documents\Visual Studio 2005\Projects\c c++ c++.net合并\test\test.cpp 3
      

  6.   

    form_closeing 调用一下保存按钮的点击事件不就行了
    btnSave_Click(Nothing,Nothing)
      

  7.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace TestSaveOnQuitSystem
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();            Application.AddMessageFilter(MyMsgFilterClass.GetMsgFilter());
                MyMsgFilterClass.GetMsgFilter().ExitWindowEvent += new EventHandler(Form1_ExitWindowEvent);
            }        void Form1_ExitWindowEvent(object sender, EventArgs e)
            {
                //处理
            }
            
        }    public class MyMsgFilterClass : IMessageFilter
        {
            public static MyMsgFilterClass GetMsgFilter()
            {
                if (s_obj == null)
                {
                    s_obj = new MyMsgFilterClass();
                }
                return s_obj;
            }        private MyMsgFilterClass()
                : base()
            {
            }        private static MyMsgFilterClass s_obj = null;
            #region IMessageFilter 成员
            private const int WM_QUERYENDSESSION = 0x0011;
            public event EventHandler ExitWindowEvent = null;
            bool IMessageFilter.PreFilterMessage(ref Message m)
            {
                if (m.Msg == WM_QUERYENDSESSION)
                {
                    //写你的保存代码。或者在事件里写保存代码
                    if (ExitWindowEvent != null)
                    {
                        ExitWindowEvent(this, new EventArgs());
                    }
                    return true;
                }
                return false;
            }        #endregion
        }
    }