private void UC_PlcDataState_Load(object sender, EventArgs e)
        {
            //다른 쓰레드에서 윈폼 컨트롤 사용가능 (비동기 작업에서 사용)
            //Control.CheckForIllegalCrossThreadCalls = false;

            if (!Directory.Exists(MyApp.RootRef))
            {
                Directory.CreateDirectory(MyApp.RootRef);
            }
            if (File.Exists(_PLCRefPath))
            {
                try
                {
                    int    iArrcnt = 0;
                    string Connstr = MyApp.RootMDB(_PLCRefPath);
                    using (OleDbConnection connDB = new OleDbConnection(Connstr))
                    {
                        connDB.Open();
                        foreach (string tbName in Share.GetMDBTable(connDB))
                        {
                            string sql = $"Select *from {tbName} " + "Order by PlcName ASC,BlockNum ASC,IndexNo ASC";

                            Array.Resize(ref tabPage, iArrcnt + 1);
                            Array.Resize(ref Uc_dgv, iArrcnt + 1);

                            tabPage[iArrcnt] = new TabPage();
                            AddTabpage(tbName, iArrcnt);

                            Uc_dgv[iArrcnt] = new UC_DGV();
                            AddDGV(iArrcnt);

                            using (DataSet dsData = new DataSet())
                            {
                                OleDbDataAdapter oledbAdapter = new OleDbDataAdapter(sql, connDB);
                                oledbAdapter.Fill(dsData);

                                //.DoubleBuffered(True)
                                Stopwatch Tchk = new Stopwatch();
                                Tchk.Start();

                                Uc_dgv[iArrcnt].DGVPlc.DataSource = dsData.Tables[0];
                                DataGridViewTextBoxColumn addrCol = new DataGridViewTextBoxColumn();

                                addrCol.Name       = "PLCVal";
                                addrCol.HeaderText = "PLCVal";

                                Uc_dgv[iArrcnt].DGVPlc.Columns.Add(addrCol);

                                Tchk.Stop();
                                Debug.Print(Tchk.Elapsed.ToString());

                                //DetailsView.Dispose();
                                oledbAdapter.Dispose();
                                oledbAdapter = null;

                                for (int i = 0; i < Uc_dgv[iArrcnt].DGVPlc.Columns.Count; i++)
                                {
                                    Uc_dgv[iArrcnt].DGVPlc.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
                                }
                            }
                            Uc_dgv[iArrcnt].DGVPlc.DoubleBuffered();
                            iArrcnt++;
                        }
                        connDB.Close();
                        connDB.Dispose();
                    }
                }
                catch (Exception ex)
                {
                    StackTrace trace      = new StackTrace(ex, true);
                    StackFrame stackFrame = trace.GetFrame(trace.FrameCount - 1);
                    int        lineNumber = stackFrame.GetFileLineNumber();

                    I_Sub.ErrorLog(($"({lineNumber}) : {ex.ToString()}"));
                }
            }
        }
        private void frmSetting_Load(object sender, EventArgs e)
        {
            //this.DisableX();
            //this.ControlBox = false;

            Connstr = MyApp.RootMDB(gs_PLCRefPath);
            TabControl1.SelectedIndex = 0;

            ReadSetXml();
            BindingPLCRefFile();
        }