程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> 同步數據

同步數據

編輯:SyBase教程

同步數據


C/S同步數據篇:

TODO:

關於同步數據篇:主要講解理清業務思路,下一篇:同步數據(依據業務需求):【將數據庫中sys_Menu數據添加到sys_Menu_Copy】

TODO:

1,表【sys_Menu_Copy】已存在數據,過濾

2,表【sys_Menu_Copy】未存在數據,添加

講解篇:1,窗體設計器生成的代碼2,後台cs代碼:

1,窗體設計器生成的代碼

namespace DataSynchronousBWokerUI
{
    partial class MainForm
    {
        /// <summary>
        /// 必需的設計器變量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的資源。
        /// </summary>
        /// <param name="disposing">如果應釋放托管資源,為 true;否則為 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows 窗體設計器生成的代碼

        /// <summary>
        /// 設計器支持所需的方法 - 不要
        /// 使用代碼編輯器修改此方法的內容。
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
            this.label = new System.Windows.Forms.Label();
            this.btStop = new System.Windows.Forms.Button();
            this.btStart = new System.Windows.Forms.Button();
            this.label4 = new System.Windows.Forms.Label();
            this.label5 = new System.Windows.Forms.Label();
            this.label6 = new System.Windows.Forms.Label();
            this.listBox1 = new System.Windows.Forms.ListBox();
            this.progressBar1 = new System.Windows.Forms.ProgressBar();
            this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
            this.tableLayoutPanel1.SuspendLayout();
            this.SuspendLayout();
            // 
            // label
            // 
            this.label.AutoSize = true;
            this.label.Location = new System.Drawing.Point(170, 67);
            this.label.Name = "label";
            this.label.Size = new System.Drawing.Size(0, 12);
            this.label.TabIndex = 13;
            // 
            // btStop
            // 
            this.btStop.Anchor = System.Windows.Forms.AnchorStyles.None;
            this.btStop.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btStop.BackgroundImage")));
            this.btStop.Font = new System.Drawing.Font("宋體", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btStop.Location = new System.Drawing.Point(212, 53);
            this.btStop.Name = "btStop";
            this.btStop.Size = new System.Drawing.Size(203, 44);
            this.btStop.TabIndex = 12;
            this.btStop.Text = "取消同步";
            this.btStop.Click += new System.EventHandler(this.btStop_Click);
            // 
            // btStart
            // 
            this.btStart.Anchor = System.Windows.Forms.AnchorStyles.None;
            this.btStart.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btStart.BackgroundImage")));
            this.btStart.Font = new System.Drawing.Font("宋體", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btStart.Location = new System.Drawing.Point(3, 53);
            this.btStart.Name = "btStart";
            this.btStart.Size = new System.Drawing.Size(203, 44);
            this.btStart.TabIndex = 11;
            this.btStart.Text = "同步數據";
            this.btStart.Click += new System.EventHandler(this.btStart_Click);
            // 
            // label4
            // 
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(33, 143);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(0, 12);
            this.label4.TabIndex = 14;
            // 
            // label5
            // 
            this.label5.AutoSize = true;
            this.label5.Image = ((System.Drawing.Image)(resources.GetObject("label5.Image")));
            this.label5.Location = new System.Drawing.Point(122, 142);
            this.label5.Name = "label5";
            this.label5.Size = new System.Drawing.Size(0, 12);
            this.label5.TabIndex = 15;
            // 
            // label6
            // 
            this.label6.AutoSize = true;
            this.label6.Image = ((System.Drawing.Image)(resources.GetObject("label6.Image")));
            this.label6.Location = new System.Drawing.Point(209, 142);
            this.label6.Name = "label6";
            this.label6.Size = new System.Drawing.Size(0, 12);
            this.label6.TabIndex = 16;
            // 
            // listBox1
            // 
            this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.listBox1.BackColor = System.Drawing.Color.White;
            this.listBox1.ForeColor = System.Drawing.SystemColors.InactiveCaptionText;
            this.listBox1.FormattingEnabled = true;
            this.listBox1.ItemHeight = 12;
            this.listBox1.Location = new System.Drawing.Point(1, 57);
            this.listBox1.Name = "listBox1";
            this.listBox1.Size = new System.Drawing.Size(417, 184);
            this.listBox1.TabIndex = 17;
            // 
            // progressBar1
            // 
            this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.progressBar1.Location = new System.Drawing.Point(1, 12);
            this.progressBar1.Name = "progressBar1";
            this.progressBar1.Size = new System.Drawing.Size(417, 30);
            this.progressBar1.TabIndex = 18;
            // 
            // tableLayoutPanel1
            // 
            this.tableLayoutPanel1.ColumnCount = 2;
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tableLayoutPanel1.Controls.Add(this.btStart, 0, 1);
            this.tableLayoutPanel1.Controls.Add(this.btStop, 1, 1);
            this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
            this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 243);
            this.tableLayoutPanel1.Name = "tableLayoutPanel1";
            this.tableLayoutPanel1.RowCount = 2;
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tableLayoutPanel1.Size = new System.Drawing.Size(419, 100);
            this.tableLayoutPanel1.TabIndex = 19;
            // 
            // MainForm
            // 
            this.BackgroundImage = global::DataSynchronousBWokerUI.Properties.Resources._1234564578798798798797987987987987;
            this.ClientSize = new System.Drawing.Size(419, 343);
            this.Controls.Add(this.tableLayoutPanel1);
            this.Controls.Add(this.progressBar1);
            this.Controls.Add(this.listBox1);
            this.Controls.Add(this.label6);
            this.Controls.Add(this.label5);
            this.Controls.Add(this.label4);
            this.Controls.Add(this.label);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.Name = "MainForm";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "測試:同步數據";
            this.tableLayoutPanel1.ResumeLayout(false);
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Label label;
        private System.Windows.Forms.Button btStop;
        private System.Windows.Forms.Button btStart;
        private System.Windows.Forms.Label label4;
        private System.Windows.Forms.Label label5;
        private System.Windows.Forms.Label label6;
        private System.Windows.Forms.ListBox listBox1;
        private System.Windows.Forms.ProgressBar progressBar1;
        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
    }
}
2,後台cs代碼

1,定義線程名,線程開始標識,連接服務器成功標識,退出程序標識,源數據庫,目標數據庫

private Thread preg;//線程名
        private bool tureOfalse;//線程執行標識
        public bool conYes;//連接服務成功失敗標識
        private bool one = false;//退出程序標識
        string strdbHipis = System.Configuration.ConfigurationManager.AppSettings["NewHmFrameWork_QHS_SQ"].ToString();//源數據庫
        //string strdbPreg = System.Configuration.ConfigurationManager.AppSettings["NewHmFrameWork_QHS_SQ_QingHai"].ToString();//目標數據庫
        string strdbPreg = System.Configuration.ConfigurationManager.ConnectionStrings["NewHmFrameWork_QHS_SQ"].ToString();//目標數據庫

2,主方法實行調用:

public MainForm()
        {
            InitializeComponent();
            btStop.Enabled = false;//未開啟進程,不允許取消進程
            //委托
            InitTrayIcon();//圖標托盤委托
            Control.CheckForIllegalCrossThreadCalls = false;//線程委托
            this.FormClosing += new FormClosingEventHandler(form_Closing);//退出程序委托
        }

3,圖標聲明

//圖標聲明
        NotifyIcon trayIcon = new NotifyIcon();
        //圖標路徑C:\Users\Administrator\Desktop\DataSynchronousBWokerUI\DataSynchronousBWokerUI\Images\_net_32.ico
        private Icon mNetTrayIcon = new Icon("..//Images//_net_32.ico");

4,線程開始

//線程開始
        private void btStart_Click(object sender, EventArgs e)
        {
            tureOfalse = true;
            preg = new Thread(new ThreadStart(PREG));
            preg.Start();

            btStart.Enabled = false;
            btStop.Enabled = true;
        }

5,線程方法

//線程方法
        private void PREG()
        {
            do
            {
                listBox1.Items.Add("正在連接源數據庫... ...!");
                listBox1.Items.Add("正在連接目標數據庫... ...!");
                ISopenCon();
            } while (!conYes);
            DoWork_select();
        }

6,線程停止

//線程停止
        private void btStop_Click(object sender, EventArgs e)
        {
            tureOfalse = false;
            preg.Abort();
            /*2015/2/2 調整:點擊[取消同步],清空listbox當前數據*/
            this.listBox1.Items.Clear();
            listBox1.Items.Add("待同步... ...");
            //控件顯示隱藏

            btStart.Enabled = true;
            btStop.Enabled = false;
        }

7,連接目標數據庫失敗將信息寫入LOG

/// <summary>
        /// 連接目標數據庫失敗將信息寫入LOG
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void fslog(Exception ex)
        {
            string filepath = DateTime.Now.ToString("yyyyMMdd") + ".log";
            FileStream fs = new FileStream(filepath, FileMode.Append, FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs);
            DateTime time = DateTime.Now;
            sw.WriteLine(time);
            //sw.WriteLine("連接目標數據庫失敗");
            sw.WriteLine(ex.Message);
            sw.WriteLine("---------------------------------------------------------");
            sw.Close();
            fs.Close();
        }

8,嘗試連接源、目標數據庫

/// <summary>
        /// 嘗試連接源、目標數據庫
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ISopenCon()
        {

            try
            {
                SqlConnection conhipis = new SqlConnection(strdbHipis);
                conhipis.Open();
                conYes = true;
                conhipis.Close();
                SqlConnection conPreg = new SqlConnection(strdbPreg);
                conPreg.Open();
                conYes = true;
                conPreg.Close();

            }
            catch (Exception ex)
            {
                conYes = false;
                fslog(ex);
                listBox1.Items.Add("連接數據庫失敗......");
                Thread.Sleep(60000);
            }

        }

9,嘗試刪除目標數據庫

/// <summary>
        /// 嘗試刪除目標數據庫
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DelPreg()
        {

            //try
            //{
            //bool delResult = true;
            ////插入數據之前,先刪除當前社區的已有數據
            //string strDelSQL = "delete from dbo.sys_Menu ";
            //strDelSQL += "delete from dbo.sys_MenuInRoles ";
            //strDelSQL += "delete from dbo.sys_UsersInRoles ";
            //delResult = ExecuteSql(strDelSQL);
            //if (delResult == false)
            //{
            //    //this.label4.Text = "刪除目標數據庫失敗......";
            //    listBox1.Items.Add("刪除目標數據庫失敗......");
            //}
            //else
            //{
            //    //this.label4.Text = "刪除目標數據庫成功......";
            //    listBox1.Items.Add("刪除目標數據庫成功......");
            //}


            /*測試數據:刪除dbo.sys_Menu_Copy在測試期間錄入的數據便於二次錄入<多次錄入>*/
            SqlConnection hipiscon;
            SqlCommand SQLcom;
            hipiscon = new SqlConnection(strdbHipis);
            string strDelSQL = "delete from dbo.sys_Menu_Copy ";
            SQLcom = new SqlCommand(strDelSQL, hipiscon);
            try
            {
                hipiscon.Open();
                SQLcom.ExecuteNonQuery();
                hipiscon.Close();
                listBox1.Items.Add("刪除目標數據庫成功......");
            }
            catch (Exception ex)
            {
                listBox1.Items.Add("刪除目標數據庫失敗......");
                fslog(ex);
                //Thread.Sleep(300000);
            }
            //}
            //catch (Exception ex)
            //{
            //    conYes = false;
            //    fslog(ex);
            //    listBox1.Items.Add("刪除目標數據庫失敗......");
            //    Thread.Sleep(60000);
            //}
        }

10,對源庫操作,對目標庫操作

/// <summary>
        /// 對源庫操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private DataTable IsOpenDT(string strSQL, string strConn)
        {
            SqlConnection hipiscon;
            SqlCommand SQLcom;
            DataTable DT;
            SqlDataAdapter SQLADA;
            hipiscon = new SqlConnection(strConn);
            SQLcom = new SqlCommand(strSQL, hipiscon);
            try
            {
                hipiscon.Open();
                SQLcom.ExecuteNonQuery();
                conYes = true;
                hipiscon.Close();
            }
            catch (Exception ex)
            {
                conYes = false;
                fslog(ex);
                //Thread.Sleep(300000);
            }
            DT = new DataTable();
            SQLADA = new SqlDataAdapter(SQLcom);
            SQLADA.Fill(DT);
            return DT;
        }
        /// <summary>
        /// 對目標庫操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void IsOpen(string strsql, string strconn)
        {
            try
            {
                SqlConnection pregcon = new SqlConnection(strconn);
                SqlCommand sqlcom = new SqlCommand(strsql, pregcon);
                pregcon.Open();
                sqlcom.ExecuteNonQuery();
                conYes = true;
                pregcon.Close();

            }
            catch (Exception ex)
            {
                conYes = false;
                fslog(ex);
                //Thread.Sleep(300000);
            }
        }

11,具體操作方法

/// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="sender"></param>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DoWork_select()
        {

            //string strtb = System.Configuration.ConfigurationManager.AppSettings["strtable"].ToString();
            //string strupdt = System.Configuration.ConfigurationManager.AppSettings["updt"].ToString();
            //string strwhere = System.Configuration.ConfigurationManager.AppSettings["where"].ToString();


            while (tureOfalse)
            {
                ISopenCon();
                /*2015/2/2 調整:不能把菜單全部刪除,沒有的添加到服務器上去,已存在的過濾掉*/
                //DelPreg();
                //DataTable dt = IsOpenDT(strSQL, strdbHipis);

                //String[] tablenamekey = new String[3] { "dbo.sys_Menu", "dbo.sys_MenuInRoles", "dbo.sys_UsersInRoles" };//源數據庫
                //String[] tablenamekeypreg = new String[3] { "dbo.sys_Menu_Copy", "dbo.sys_MenuInRoles_Copy", "dbo.sys_UsersInRoles_Copy" };//目標數據庫

                //測試數據
                String[] tablenamekey = new String[1] { "dbo.sys_Menu" };//源數據庫
                String[] tablenamekeypreg = new String[1] { "dbo.sys_Menu_Copy" };//目標數據庫
                if (tablenamekey.Length > 0)
                {
                    for (int i = 0; i < tablenamekey.Length; i++)
                    {
                        string strtablenamekey = tablenamekey[i];
                        string strSQL1 = "select * from ";
                        strSQL1 += strtablenamekey;
                        strSQL1 += " where (1=1)";

                        insert_OR_update(strdbHipis, ref strSQL1, tablenamekeypreg[i]);
                    }
                }
            }
        }

        /// <summary>
        /// 插入,更新 最新數據到PIS數據庫
        /// </summary>
        /// <param name="con">需要更新的表的連接字符串</param>
        /// <param name="lastSQL">最後SQL語句</param>
        /// <param name="tbName">需要操作的表</param>
        private void insert_OR_update(string strdbHipis, ref string strSQL, string tbName)
        {
            int a = 0;
            int b = 0;
            string lastSQL;
            DataTable dttb;
            DataTable dttb1;
            dttb = IsOpenDT(strSQL, strdbHipis);

            /*2015/2/2 調整:新增[進度條]追加顯示加載信息*/
            progressBar1.Maximum = dttb.Rows.Count;//設置最大長度值
            progressBar1.Value = 0;//設置當前值
            progressBar1.Step = 1;//設置每次增長1條數據

            listBox1.Items.Add("連接源數據庫成功......");
            listBox1.Items.Add("連接目標數據庫成功......");
            listBox1.Items.Add("正在同步... ...");
            try
            {
                for (int i = 0; i < dttb.Rows.Count; i++)//根據判斷條件循環更新數據庫中的信息
                {
                    /*2015/2/2 調整:不能把菜單全部刪除,沒有的添加到服務器上去,已存在的過濾掉*/
                    lastSQL = "select * from " + tbName + " where sCode= '" + dttb.Rows[i][0].ToString().Trim() + "'";
                    //更新dttb1:一條記錄 判斷是否存在<過濾:新增>
                    /*測試數據庫:源庫和目標庫一致 後期調整目標庫連接字符串*/
                    dttb1 = IsOpenDT(lastSQL, strdbPreg);
                    //目標庫中存在一條數據 取消
                    if (dttb1 != null && dttb1.Rows.Count > 0)
                    {
                        a = a + 1;
                        listBox1.Items.Add("已過濾" + a.ToString() + "條!");
                    }
                    else
                    {
                        string valuse = "";
                        string allcolumName = "";
                        for (int j = 0; j < dttb1.Columns.Count; j++)
                        {
                            if (j == dttb1.Columns.Count - 1)
                            {
                                allcolumName += dttb1.Columns[j].ColumnName.ToString();
                            }
                            else
                            {
                                allcolumName += dttb1.Columns[j].ColumnName.ToString() + ",";
                            }
                        }

                        //如果在線庫中的時間為空則進行插入操作


                        for (int j = 0; j < dttb.Columns.Count; j++)
                        {
                            if (j == dttb.Columns.Count - 1)
                            {
                                valuse += "'" + dttb.Rows[i][j].ToString() + "'";
                            }
                            else
                            {
                                valuse += "'" + dttb.Rows[i][j] + "',";
                            }
                        }

                        lastSQL = "insert into " + tbName + " (" + allcolumName + ") values (" + valuse + ")";

                        IsOpen(lastSQL, strdbPreg);
                        b = b + 1;
                        listBox1.Items.Add("已插入" + b.ToString() + "條!");
                    }
                    /*2015/2/2 調整:新增[進度條]追加顯示加載信息*/
                    progressBar1.Value += progressBar1.Step;//讓進度條增加一次
                }
            }
            catch (Exception ex)
            {
                fslog(ex);
            }
            if ((a + b) > 0)
            {
                listBox1.Items.Add(tbName + "成功過濾" + a + "條數據條數據,成功插入" + b + "條數據!");
                listBox1.Items.Add(tbName + "同步數據成功!");
                //tureOfalse = false;
                preg.Abort();//線程執行標識:同步成功 關閉線程
                //UPINlog(a, b, tbName);
            }
            else
            {
                listBox1.Items.Add("");
            }

        }

12,此段代碼相當於sqlhelper.cs功能【連接數據庫】:

/// <summary>
        /// 執行SQL語句
        /// </summary>
        /// <param name="SQLString">SQL語句</param>
        /// <returns>bool值,成功返回true,失敗返回false</returns>
        public static bool ExecuteSql(string SQLString)
        {
            bool isSucc = false;
            using (SqlConnection connection = new SqlConnection("Data Source=192.168.44.161;Initial Catalog=NewHmFrameWork_QHS_SQ_QingHai;Persist Security Info=True;User ID=sa;Password=jqkj123$%^;"))
            {
                connection.Open();

                using (SqlTransaction trans = connection.BeginTransaction())
                {
                    using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                    {

                        cmd.Transaction = trans;
                        int rows = cmd.ExecuteNonQuery();
                        trans.Commit();
                        isSucc = true;


                    }
                }

            }
            return isSucc;
        }

13,初始化托盤圖標

/// <summary>
        /// 初始化托盤圖標
        /// </summary>
        public void InitTrayIcon()
        {

            // 設置托盤圖標的菜單
            trayIcon.Icon = mNetTrayIcon;
            trayIcon.Text = "單擊最大化程序";
            trayIcon.Visible = true;
            trayIcon.Click += new EventHandler(trayIcon_Click);
            MenuItem[] mnuItems = new MenuItem[4];
            mnuItems[0] = new MenuItem();
            mnuItems[0].Text = "顯示";
            mnuItems[0].Click += new EventHandler(Item0_Click);

            mnuItems[1] = new MenuItem();
            mnuItems[1].Text = "隱藏";
            mnuItems[1].Click += new EventHandler(Item1_Click);

            mnuItems[2] = new MenuItem("-");

            mnuItems[3] = new MenuItem();
            mnuItems[3].Text = "退出程序";
            mnuItems[3].Click += new EventHandler(Item3_Click);
            trayIcon.ContextMenu = new ContextMenu(mnuItems);
        }

14,顯示窗體,隱藏窗體,退出事件,點擊托盤圖標,單擊X退出程序,

/// <summary>
        /// 顯示窗體
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Item0_Click(object sender, EventArgs e)
        {
            this.Show();

        }

        /// <summary>
        /// 隱藏窗體
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Item1_Click(object sender, EventArgs e)
        {
            this.Hide();
            this.trayIcon.ShowBalloonTip(5, "提示", "單擊最大化程序", ToolTipIcon.Info);
        }

        /// <summary>
        /// 退出事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Item3_Click(object sender, EventArgs e)
        {

            preg.Abort();
            Application.Exit();
        }

        /// <summary>
        /// 點擊托盤圖標
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void trayIcon_Click(object sender, EventArgs e)
        {
            this.Visible = true;
            this.WindowState = FormWindowState.Maximized;

        }
        /// <summary>
        /// 單擊X退出程序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void form_Closing(object sender, FormClosingEventArgs e)
        {
            if (one == false)
            {
                DialogResult dia = MessageBox.Show("是否真的退出程序!", " ", MessageBoxButtons.OKCancel);
                if (dia == DialogResult.Cancel)
                {
                    e.Cancel = true;
                    this.Show();
                    this.trayIcon.Visible = true;
                }
                if (dia == DialogResult.OK)
                {
                    one = true;
                    /*2015/2/2 調整:退出[未同步時,直接退出]*/
                    preg = new Thread(new ThreadStart(PREG));
                    preg.Start();
                    preg.Abort();
                    Application.Exit();
                }
            }
        }

\\\\\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved