/// <summary>
            /// 工作簿的组合列表框的选择项发生变化时,更新施工进度工作表的列表框
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            /// <remarks></remarks>
            public void CmbbxProgressWkbk_SelectedValueChanged(object sender, EventArgs e)
            {
                Workbook            wkbk    = default(Workbook);
                LstbxDisplayAndItem lstItem = (LstbxDisplayAndItem)CmbbxProgressWkbk.SelectedItem;

                if (lstItem == null)
                {
                    this.LstbxSheetsProgressInProject.DataSource = null;
                    this.LstbxSheetsProgressInWkbk.DataSource    = null;
                }
                else
                {
                    wkbk = (Workbook)lstItem.Value;
                    //'-- 这里的shtsObject只能声明为Object,而不能声明为Worksheets接口,否则会出现异常:
                    //无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型
                    //“Microsoft.Office.Interop.Excel.Worksheets”。此操作失败的原因是对 IID
                    //为“{000208B1-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface
                    //因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。
                    //'-- 但是这里一定要如此调用,而不用dim sht as worksheet=wkbk.Worksheets(i)去一次一次地
                    //调用每一个单个的工作表,是为了避免多次调用Worksheets接口。
                    dynamic shtsObject = wkbk.Worksheets;
                    short   shtCount   = System.Convert.ToInt16(shtsObject.Count);
                    LstbxDisplayAndItem[] arrSheets = new LstbxDisplayAndItem[shtCount - 1 + 1];
                    for (var i = 0; i <= shtCount - 1; i++)
                    {
                        Worksheet sht = shtsObject[i + 1]; //Worksheets接口的集合中的第一个元素的下标值为1
                        arrSheets[(int)i] = new LstbxDisplayAndItem(sht.Name, sht);
                    }
                    LstbxSheetsProgressInWkbk.DataSource = arrSheets;
                }
            }
            /// <summary>
            /// 在项目中移除数据库工作簿
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            /// <remarks>在从列表框中移除项目时,一定要注意,由于集合的数据结构,所以删除时要从后面的开始删除,
            /// 否则可能会出现索引不到的情况。</remarks>
            public void BtnRemoveWorkbook_Click(object sender, EventArgs e)
            {
                byte count = (byte)LstBxWorkbooks.SelectedIndices.Count;

                if (count > 0)
                {
                    List <LstbxDisplayAndItem> DataSource = new List <LstbxDisplayAndItem>();
                    if (LstBxWorkbooks.DataSource != null)
                    {
                        foreach (LstbxDisplayAndItem i in (LstBxWorkbooks.DataSource as List <LstbxDisplayAndItem>))
                        {
                            DataSource.Add(i);
                        }
                    }
                    //
                    Workbook            wkbk      = default(Workbook);
                    LstbxDisplayAndItem lstbxItem = default(LstbxDisplayAndItem);
                    int index = 0;
                    for (int i = (count - 1); i >= 0; i--)
                    {
                        index     = LstBxWorkbooks.SelectedIndices[i];
                        lstbxItem = DataSource[index];
                        //
                        wkbk = (Workbook)lstbxItem.Value;
                        wkbk.Close(false);
                        DataSource.RemoveAt(index);
                    }
                    LstBxWorkbooks.DataSource = DataSource;
                    if (WorkBookInProjectChangedEvent != null)
                    {
                        WorkBookInProjectChangedEvent(BtnRemoveWorkbook, this.F_NewFileContents, true);
                    }
                }
            }
Esempio n. 3
0
        /// <summary>
        /// 选择监测数据的文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <remarks></remarks>
        public void btnChooseMonitorData_Click(object sender, EventArgs e)
        {
            string FilePath = "";

            APPLICATION_MAINFORM.MainForm.OpenFileDialog1.Title       = "选择测斜数据文件";
            APPLICATION_MAINFORM.MainForm.OpenFileDialog1.Filter      = "Excel文件(*.xlsx, *.xls, *.xlsb)|*.xlsx;*.xls;*.xlsb";
            APPLICATION_MAINFORM.MainForm.OpenFileDialog1.FilterIndex = 2;
            if (APPLICATION_MAINFORM.MainForm.OpenFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                FilePath = APPLICATION_MAINFORM.MainForm.OpenFileDialog1.FileName;
            }
            else
            {
                return;
            }
            if (FilePath.Length > 0)
            {
                //将监测数据文件在DataBase的Excel程序中打开
                try
                {
                    //有可能会出现选择了同样的监测数据文档
                    bool fileHasOpened = false;
                    foreach (LstbxDisplayAndItem item in this.ComboBoxOpenedWorkbook.Items)
                    {
                        Excel.Workbook wkbk = (Excel.Workbook)item.Value;
                        if (string.Compare(wkbk.FullName, FilePath, true) == 0)
                        {
                            this.F_wkbkData = wkbk;
                            fileHasOpened   = true;
                            break;
                        }
                    }
                    // ----------------------------
                    if (fileHasOpened)
                    {
                        MessageBox.Show("选择的工作簿已经打开", "Tip", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        this.F_wkbkData = GlobalApplication.Application.ExcelApplication_DB.Workbooks.Open(Filename:  FilePath, UpdateLinks: false, ReadOnly: true);
                        LstbxDisplayAndItem lstItem = new LstbxDisplayAndItem(this.F_wkbkData.Name, this.F_wkbkData);
                        this.ComboBoxOpenedWorkbook.Items.Add(lstItem);
                        this.ComboBoxOpenedWorkbook.SelectedItem = lstItem;
                        if (DataWorkbookChangedEvent != null)
                        {
                            DataWorkbookChangedEvent(this.F_wkbkData);
                        }
                    }
                }
                catch (Exception)
                {
                    Debug.Print("打开新的数据工作簿出错!");
                    return;
                }
            }
        }
Esempio n. 4
0
        public void ComboBox_WorkingStage_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.F_WorkingStage = null;
            LstbxDisplayAndItem lstItem = ComboBox_WorkingStage.SelectedItem as LstbxDisplayAndItem;;

            if (lstItem != null)
            {
                if (!lstItem.Value.Equals(LstbxDisplayAndItem.NothingInListBox.None))
                {
                    F_WorkingStage = (List <clsData_WorkingStage>)lstItem.Value;
                }
            }
        }
Esempio n. 5
0
        public void ComboBox_Column_ShapeID_SelectedIndexChanged(object sender, EventArgs e)
        {
            LstbxDisplayAndItem lstItem = this.ComboBox_Column_ShapeID.SelectedItem;

            try
            {
                this.F_IndexOfShapeID = (int)lstItem.Value;
            }
            catch (Exception)
            {
                //MessageBox.Show(ex.Message, "选择形状ID的字段出错!", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            }
            this.btnLink.Enabled = false;
        }
Esempio n. 6
0
        /// <summary>
        /// 从Visio文档中返回其中的所有DataRecordset对象的数组
        /// </summary>
        /// <param name="Doc"></param>
        /// <returns></returns>
        /// <remarks></remarks>
        private LstbxDisplayAndItem[] GetDataRsFromDoc(Microsoft.Office.Interop.Visio.Document Doc)
        {
            short DRSsCount = (short)Doc.DataRecordsets.Count;

            LstbxDisplayAndItem[] arrItems = new LstbxDisplayAndItem[DRSsCount - 1 + 1];
            short i = (short)0;

            foreach (Microsoft.Office.Interop.Visio.DataRecordset DRS in Doc.DataRecordsets)
            {
                arrItems[i] = new LstbxDisplayAndItem(DRS.Name, DRS);
                i++;
            }
            return(arrItems);
        }
Esempio n. 7
0
        public void ComboBox_Page_SelectedIndexChanged(object sender, EventArgs e)
        {
            LstbxDisplayAndItem lstItem = this.ComboBox_Page.SelectedItem;

            try
            {
                this.F_vsoPage = (Microsoft.Office.Interop.Visio.Page)lstItem.Value;
            }
            catch (Exception)
            {
                //MessageBox.Show(ex.Message, "选择Visio页面出错!", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            }
            this.btnLink.Enabled = false;
        }
Esempio n. 8
0
        /// <summary>
        /// 当选择的数据工作表发生变化时引发
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <remarks></remarks>
        public void listSheetsName_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.F_shtMonitorData = (Excel.Worksheet)listSheetsName.SelectedValue; //wkbkData.Worksheets(listSheetsName.SelectedItem)
            string[] arrPointsTag = null;                                          //此工作表中的测点的编号列表
                                                                                   //测点编号所在的起始行与末尾行
            int startRow  = RowNum_FirstData_WithoutDate;
            int endRow    = F_shtMonitorData.UsedRange.Rows.Count;
            int endColumn = F_shtMonitorData.UsedRange.Columns.Count;

            F_arrBottomRightCorner = new[] { endRow, endColumn }; //'进行操作的工作表的UsedRange的右下角的行号与列号
            if (endRow >= startRow)
            {
                Excel.Range rg_PointsTag = F_shtMonitorData.Columns[ColNum_PointsTag].Range(F_shtMonitorData.Cells[startRow, 1], F_shtMonitorData.Cells[endRow, 1]);
                arrPointsTag = ExcelFunction.ConvertRangeDataToVector <string>(rg_PointsTag);


                //------------   将编号列表的每一个值与其对应的行号添加到字典dicPointTag_RowNum中
                short TagsCount = (short)arrPointsTag.Length;
                LstbxDisplayAndItem[] arrPoints = new LstbxDisplayAndItem[TagsCount - 1 + 1];

                int add = 0;
                int i   = 0;
                foreach (string tag in arrPointsTag)
                {
                    //在Excel数据表中,每一个监测点位的Tag所在的行号。
                    short RowNumToPointsTag = (short)(startRow + add);
                    arrPoints[i] = new LstbxDisplayAndItem(tag, startRow + add);
                    add++;
                    i++;
                }

                //----------------------  将编号列表的所有值显示在窗口的测点列表中
                ListBoxPointsName.DisplayMember = LstbxDisplayAndItem.DisplayMember;
                ListBoxPointsName.ValueMember   = LstbxDisplayAndItem.ValueMember;
                ListBoxPointsName.DataSource    = arrPoints;
                //.Items.Clear()
                //.Items.AddRange(arr)
                //.SelectedIndex = 0          '选择列表中的第一项
                //
                btnGenerate.Enabled = true;
            }
            else //说明此表中的监测数据行数小于1
            {
                ListBoxPointsName.DataSource = null;
                //ListPointsName.Items.Clear()
                MessageBox.Show("此工作表没有合法数据(数据行数小于1行),请选择合适的工作表", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error);
                F_shtMonitorData    = null;
                btnGenerate.Enabled = false;
            }
        }
Esempio n. 9
0
        /// <summary>
        /// 从Visio文档中返回其中的所有Page对象的数组
        /// </summary>
        /// <param name="Doc"></param>
        /// <returns></returns>
        /// <remarks></remarks>
        private LstbxDisplayAndItem[] GetPagesFromDoc(Microsoft.Office.Interop.Visio.Document Doc)
        {
            short pagesCount = Doc.Pages.Count;

            LstbxDisplayAndItem[] arrItems = new LstbxDisplayAndItem[pagesCount - 1 + 1];
            short i = (short)0;

            foreach (Microsoft.Office.Interop.Visio.Page page in Doc.Pages)
            {
                arrItems[i] = new LstbxDisplayAndItem(page.Name, page);
                i++;
            }
            return(arrItems);
        }
Esempio n. 10
0
        /// <summary>
        /// 从Visio文档的数据记录集中返回其中的字段列对象的数组
        /// </summary>
        /// <param name="DRS"></param>
        /// <returns></returns>
        /// <remarks></remarks>
        private LstbxDisplayAndItem[] GetColumnsFromDataRS(Microsoft.Office.Interop.Visio.DataRecordset DRS)
        {
            int ColumnsCount = DRS.DataColumns.Count;

            LstbxDisplayAndItem[] arrItems = new LstbxDisplayAndItem[ColumnsCount - 1 + 1];
            int i = 0;

            foreach (Microsoft.Office.Interop.Visio.DataColumn Column in DRS.DataColumns)
            {
                //在数据记录集中,第一列数据的Index为0。
                arrItems[i] = new LstbxDisplayAndItem(Column.DisplayName, i);
                i++;
            }
            return(arrItems);
        }
            //开挖工况的数据工作表
            public void CmbbxWorkingStage_SelectedIndexChanged(object sender, EventArgs e)
            {
                LstbxDisplayAndItem LstbxItem = CmbbxWorkingStage.SelectedItem as LstbxDisplayAndItem;

                if (LstbxItem != null)
                {
                    if (!LstbxItem.Value.Equals(LstbxDisplayAndItem.NothingInListBox.None))
                    {
                        this.F_NewFileContents.Sheet_WorkingStage = (Worksheet)LstbxItem.Value;
                    }
                    else
                    {
                        this.F_NewFileContents.Sheet_WorkingStage = null;
                    }
                }
            }
Esempio n. 12
0
        public void ComboBox_DataRs_SelectedIndexChanged(object sender, EventArgs e)
        {
            LstbxDisplayAndItem lstItem = this.ComboBox_DataRs.SelectedItem;

            try
            {
                Microsoft.Office.Interop.Visio.DataRecordset DataRs = (Microsoft.Office.Interop.Visio.DataRecordset)lstItem.Value;
                this.F_vsoDataRs = DataRs;
                //更新数据记录集中的字段列。
                this.ComboBox_Column_ShapeID.DataSource = GetColumnsFromDataRS(DataRs);
            }
            catch (Exception)
            {
                //MessageBox.Show(ex.Message, "选择数据记录集出错!", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            }
            this.btnLink.Enabled = false;
        }
Esempio n. 13
0
        /// <summary>
        /// 选择进行绘图的数据工作簿
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <remarks></remarks>
        public void ComboBoxOpenedWorkbook_SelectedIndexChanged(object sender, EventArgs e)
        {
            LstbxDisplayAndItem lst = this.ComboBoxOpenedWorkbook.SelectedItem as LstbxDisplayAndItem;

            try
            {
                Excel.Workbook Wkbk = (Excel.Workbook)lst.Value;
                this.F_wkbkData = Wkbk;
                APPLICATION_MAINFORM.MainForm.StatusLabel1.Visible = true;
                APPLICATION_MAINFORM.MainForm.StatusLabel1.Text    = Wkbk.FullName;
                if (DataWorkbookChangedEvent != null)
                {
                    DataWorkbookChangedEvent(this.F_wkbkData);
                }
            }
            catch (Exception)
            {
                Debug.Print("选择数据工作簿出错");
            }
        }
            /// <summary>
            /// 将项目文件中的工作表添加到组合列表框中
            /// </summary>
            /// <param name="cmbx">进行添加的组合列表框</param>
            /// <param name="destinationSheet">要添加到组合列表框中的工作表对象</param>
            /// <remarks></remarks>
            private void SheetToComboBox(ComboBox cmbx, Worksheet destinationSheet)
            {
                LstbxDisplayAndItem lstbxItem = default(LstbxDisplayAndItem);
                Worksheet           sht       = default(Worksheet);
                ComboBox            with_1    = cmbx;

                foreach (LstbxDisplayAndItem tempLoopVar_lstbxItem in with_1.Items)
                {
                    lstbxItem = tempLoopVar_lstbxItem;
                    if (!lstbxItem.Value.Equals(LstbxDisplayAndItem.NothingInListBox.None))
                    {
                        //有可能会出现列表中的项目不能转换为工作表对象的情况,比如第一项""
                        sht = (Worksheet)lstbxItem.Value;
                        if (ExcelFunction.SheetCompare(sht, destinationSheet))
                        {
                            with_1.SelectedItem = lstbxItem;
                            break;
                        }
                    }
                }
            }
Esempio n. 15
0
        /// <summary>
        /// 当进行绘图的数据工作簿发生变化时触发
        /// </summary>
        /// <param name="WorkingDataWorkbook">要进行绘图的数据工作簿</param>
        /// <remarks></remarks>
        public void frmDrawing_Mnt_Incline_DataWorkbookChanged(Excel.Workbook WorkingDataWorkbook)
        {
            //-------- 在列表中显示出监测数据工作簿中的所有工作表
            byte sheetsCount = (byte)WorkingDataWorkbook.Worksheets.Count;

            LstbxDisplayAndItem[] arrWorkSheets = new LstbxDisplayAndItem[sheetsCount - 1 + 1];
            byte i = (byte)0;

            foreach (Excel.Worksheet sht in WorkingDataWorkbook.Worksheets)
            {
                arrWorkSheets[i] = new LstbxDisplayAndItem(sht.Name, sht);
                i++;
            }
            listSheetsName.DisplayMember = LstbxDisplayAndItem.DisplayMember;
            listSheetsName.ValueMember   = LstbxDisplayAndItem.ValueMember;
            listSheetsName.DataSource    = arrWorkSheets;
            //.Items.Clear()
            //.Items.AddRange(sheetsNameList)
            //.SelectedItem = .Items(0)
            //
            btnGenerate.Enabled = true;
        }
Esempio n. 16
0
 /// <summary>
 /// 在列表中列出所有基坑区域的Tag值
 /// </summary>
 /// <param name="ProcessRange"></param>
 /// <remarks></remarks>
 private void RefreshComobox_ProcessRange(List <clsData_ProcessRegionData> ProcessRange)
 {
     if (ProcessRange != null)
     {
         try
         {
             // list all the tags of each excavation region in the listbox
             byte count = System.Convert.ToByte(ProcessRange.Count);
             LstbxDisplayAndItem[] arrItems = new LstbxDisplayAndItem[count - 1 + 1];
             byte i = (byte)0;
             foreach (clsData_ProcessRegionData PR in ProcessRange)
             {
                 arrItems[i] = new LstbxDisplayAndItem(DisplayedText: PR.description, Value:
                                                       PR);
                 i++;
             }
             GeneralMethods.RefreshCombobox(this.lstbxChooseRegion, arrItems);
         }
         catch (Exception)
         {
         }
     }
 }
Esempio n. 17
0
 private void RefreshCombox_WorkingStage(Dictionary <string, List <clsData_WorkingStage> > NewWorkingStage)
 {
     if (NewWorkingStage != null)
     {
         Dictionary <,> with_1 = NewWorkingStage;
         try
         {
             var RegionNames   = with_1.Keys;
             var WorkingStages = with_1.Values;
             int TagsCount     = System.Convert.ToInt32(with_1.Count);
             LstbxDisplayAndItem[] TagsList = new LstbxDisplayAndItem[TagsCount + 1];
             TagsList[0] = new LstbxDisplayAndItem("无", LstbxDisplayAndItem.NothingInListBox.None);
             //
             for (int i1 = 0; i1 <= TagsCount - 1; i1++)
             {
                 TagsList[i1 + 1] = new LstbxDisplayAndItem(System.Convert.ToString(RegionNames(i1)), WorkingStages(i1));
             }
             GeneralMethods.RefreshCombobox(this.ComboBox_WorkingStage, TagsList);
         }
         catch (Exception)
         {
         }
     }
 }
            //添加或者移除工作簿
            /// <summary>
            /// 在项目中添加数据库的工作簿
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            /// <remarks></remarks>
            public void btnAddWorkbook_Click(object sender, EventArgs e)
            {
                string FilePath = "";

                APPLICATION_MAINFORM.MainForm.OpenFileDialog1.Title       = "选择Excel数据工作簿";
                APPLICATION_MAINFORM.MainForm.OpenFileDialog1.Filter      = "Excel文件(*.xlsx, *.xls, *.xlsb)|*.xlsx;*.xls;*.xlsb";
                APPLICATION_MAINFORM.MainForm.OpenFileDialog1.FilterIndex = 1;
                if (APPLICATION_MAINFORM.MainForm.OpenFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    FilePath = APPLICATION_MAINFORM.MainForm.OpenFileDialog1.FileName;
                }
                if (FilePath.Length > 0)
                {
                    Workbook wkbk = null;
                    //先看选择的工作簿是否已经在数据库的Excel程序中打开
                    bool blnOpenedInApp = false;
                    foreach (Workbook wkbkOpened in GlbApp.ExcelApplication_DB.Workbooks)
                    {
                        if (string.Compare(wkbkOpened.FullName, FilePath) == 0)
                        {
                            wkbk           = wkbkOpened;
                            blnOpenedInApp = true;
                            break;
                        }
                    }

                    //
                    if (!blnOpenedInApp) //如果此工作簿还没有在Excel程序中打开
                    {
                        //则将其打开,并添加到列表框中
                        wkbk = GlbApp.ExcelApplication_DB.Workbooks.Open(Filename: FilePath, UpdateLinks:
                                                                         false, ReadOnly: true);
                        //为列表框中添加新元素
                        List <LstbxDisplayAndItem> DataSource = new List <LstbxDisplayAndItem>();
                        if (LstBxWorkbooks.DataSource != null)
                        {
                            foreach (LstbxDisplayAndItem i in (LstBxWorkbooks.DataSource as List <LstbxDisplayAndItem>))
                            {
                                DataSource.Add(i);
                            }
                        }
                        DataSource.Add(new LstbxDisplayAndItem(FilePath, wkbk));
                        LstBxWorkbooks.DataSource = DataSource;
                        //
                        if (WorkBookInProjectChangedEvent != null)
                        {
                            WorkBookInProjectChangedEvent(btnAddWorkbook, this.F_NewFileContents, false);
                        }
                    }
                    else //说明此工作簿已经在Excel中打开
                    {
                        //则先检查它是否已经添加到了列表框中
                        LstbxDisplayAndItem lstbxItem = default(LstbxDisplayAndItem);
                        bool blnShownInListbox        = false;
                        foreach (LstbxDisplayAndItem tempLoopVar_lstbxItem in LstBxWorkbooks.Items)
                        {
                            lstbxItem = tempLoopVar_lstbxItem;
                            Workbook wkbkInproject = (Workbook)lstbxItem.Value;
                            if (string.Compare(wkbkInproject.FullName, FilePath) == 0)
                            {
                                blnShownInListbox = true;
                            }
                        }
                        if (!blnShownInListbox)
                        {
                            //为列表框中添加新元素
                            List <LstbxDisplayAndItem> DataSource = new List <LstbxDisplayAndItem>();
                            var controlSource = LstBxWorkbooks.DataSource as List <LstbxDisplayAndItem>;
                            if (controlSource != null)
                            {
                                foreach (LstbxDisplayAndItem i in controlSource)
                                {
                                    DataSource.Add(i);
                                }
                            }
                            DataSource.Add(new LstbxDisplayAndItem(FilePath, wkbk));
                            LstBxWorkbooks.DataSource = DataSource;
                            //
                            if (WorkBookInProjectChangedEvent != null)
                            {
                                WorkBookInProjectChangedEvent(btnAddWorkbook, this.F_NewFileContents, false);
                            }
                        }
                    }

                    //再看将工作簿对象添加到列表中
                }
            }
            /// <summary>
            /// 项目中的数据库工作簿发生变化时,更新窗口中的相关列表框中的数据对象
            /// </summary>
            /// <param name="lstAllsheet"></param>
            /// <param name="FileContents"></param>
            /// <remarks></remarks>
            private void ListControlRefresh(List <LstbxDisplayAndItem> lstAllsheet,
                                            clsData_FileContents FileContents)
            {
                short intSheetsCount = System.Convert.ToInt16(lstAllsheet.Count);

                LstbxDisplayAndItem[] arrAllSheets1 = new LstbxDisplayAndItem[intSheetsCount - 1 + 1];
                LstbxDisplayAndItem[] arrAllSheets2 = new LstbxDisplayAndItem[intSheetsCount - 1 + 1];
                LstbxDisplayAndItem[] arrAllSheets3 = new LstbxDisplayAndItem[intSheetsCount - 1 + 1];
                LstbxDisplayAndItem[] arrAllSheets4 = new LstbxDisplayAndItem[intSheetsCount - 1 + 1];
                //这里一定要生成副本,因为如果是同一个引用变量,那么设置到三个控件的DataSource属性中后,
                //如果一个列表组合框的选择项发生变化,那个另外两个控件的选择项也会同步变化。
                arrAllSheets1 = lstAllsheet.ToArray() as LstbxDisplayAndItem[];
                arrAllSheets2 = arrAllSheets1.Clone() as LstbxDisplayAndItem[];
                arrAllSheets3 = arrAllSheets1.Clone() as LstbxDisplayAndItem[];
                arrAllSheets4 = arrAllSheets1.Clone() as LstbxDisplayAndItem[];

                //设置各种列表框中的数据以及选择的项lstbxWorksheetsInProjectFileChanged
                frmProjectFile with_1 = this;

                //开挖平面工作表
                CmbbxPlan.DataSource  = arrAllSheets1;
                CmbbxPlan.ValueMember = cstValueMember;
                if (FileContents.Sheet_PlanView != null)
                {
                    this.SheetToComboBox(CmbbxPlan, FileContents.Sheet_PlanView);
                }
                else
                {
                    CmbbxPlan.SelectedValue = LstbxDisplayAndItem.NothingInListBox.None;
                }

                //测点坐标工作表
                CmbbxPointCoordinates.DataSource  = arrAllSheets2;
                CmbbxPointCoordinates.ValueMember = cstValueMember;
                if (FileContents.Sheet_PointCoordinates != null)
                {
                    this.SheetToComboBox(CmbbxPointCoordinates, FileContents.Sheet_PointCoordinates);
                }
                else
                {
                    CmbbxPointCoordinates.SelectedValue = LstbxDisplayAndItem.NothingInListBox.None;
                }

                //开挖剖面工作表
                CmbbxSectional.DataSource  = arrAllSheets3;
                CmbbxSectional.ValueMember = cstValueMember;
                if (FileContents.Sheet_Elevation != null)
                {
                    this.SheetToComboBox(CmbbxSectional, FileContents.Sheet_Elevation);
                }
                else
                {
                    CmbbxSectional.SelectedValue = LstbxDisplayAndItem.NothingInListBox.None;
                }

                //开挖工况工作表
                CmbbxWorkingStage.DataSource  = arrAllSheets4;
                CmbbxWorkingStage.ValueMember = cstValueMember;
                if (FileContents.Sheet_WorkingStage != null)
                {
                    this.SheetToComboBox(CmbbxWorkingStage, FileContents.Sheet_WorkingStage);
                }
                else
                {
                    CmbbxWorkingStage.SelectedValue = LstbxDisplayAndItem.NothingInListBox.None;
                }


                //为施工进度列表服务的组合列表框
                if (CmbbxProgressWkbk.Items.Count == 0)
                {
                    //工作簿中的工作表列表框
                    this.LstbxSheetsProgressInWkbk.DataSource = null;
                    //上面将DataSource设置为Nothing会清空DisplayMember属性的值,那么下次再向列表框中添加成员时,
                    //其DisplayMember就为Nothing了,所以必须在下面设置好其DisplayMember的值。
                    this.LstbxSheetsProgressInWkbk.DisplayMember = LstbxDisplayAndItem.DisplayMember;
                }
                else
                {
                    CmbbxProgressWkbk.SelectedIndex = 0;
                }
            }
Esempio n. 20
0
        /// <summary>
        /// 设置监测数据的类型
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <remarks></remarks>
        public void ComboBox_MntType_SelectedValueChanged(object sender, EventArgs e)
        {
            LstbxDisplayAndItem item = (LstbxDisplayAndItem)this.ComboBox_MntType.SelectedItem;

            this.F_MonitorType = (MntType)item.Value;
        }