Exemple #1
0
        //链接
        /// <summary>
        /// 将Visio中的外部数据链接到Page中的指定形状。
        /// 此操作的作用:通过Visio的数据图形功能,在对应的形状上显示出它所链接的数据,比如此图形对应的开挖深度。
        /// </summary>
        /// <param name="DataRS">数据链接的源数据记录集</param>
        /// <param name="Page">要进行数据链接的形状所在的Page</param>
        /// <param name="ColumnIndex_PrimaryKey">在数据记录集中,用来记录形状的名称的数据所在的列号。如果是第一列,则为0.</param>
        /// <param name="DeleteDataRecordset">是否要在数据记录集的数据链接到形状后,将此数据记录集删除。</param>
        /// <remarks></remarks>
        private dynamic PassDataRecordsetToShape(Microsoft.Office.Interop.Visio.DataRecordset DataRS, Microsoft.Office.Interop.Visio.Page Page, short ColumnIndex_PrimaryKey = 0, bool DeleteDataRecordset = false)
        {
            bool blnSucceeded = true;

            int[] IDs = null;
            //  ------------------ GetDataRowIDs ---------------------
            //获取数据记录集内所有行的 ID 组成的数组,其中每一行均代表一个数据记录。
            //若要不应用筛选器(即获取所有行),则传递一个空字符串 ("") 即可。
            IDs = DataRS.GetDataRowIDs("");
            //
            Microsoft.Office.Interop.Visio.Shape shp = default(Microsoft.Office.Interop.Visio.Shape);
            try
            {
                foreach (int RowID in IDs)
                {
                    int shapeID = System.Convert.ToInt32(DataRS.GetRowData(RowID)[ColumnIndex_PrimaryKey]);
                    //ItemFromID可以进行页面或者形状集合中的全局索引,即可以索引子形状中的嵌套形状,而Item一般只能索引其下的子形状。
                    shp = Page.Shapes.ItemFromID(shapeID);
                    shp.LinkToData(DataRS.ID, RowID, false);
                }
            }
            catch (Exception)
            {
                blnSucceeded = false;
            }

            //是否要在数据记录集的数据链接到形状后,将此数据记录集删除。
            if (DeleteDataRecordset)
            {
                DataRS.Delete();
                DataRS = null;
            }
            return(blnSucceeded);
        }
Exemple #2
0
        //验证
        /// <summary>
        /// 验证页面中是否包含所有位于数据记录集中所记录的形状ID。
        /// </summary>
        /// <param name="page"></param>
        /// <param name="DRS"></param>
        /// <returns></returns>
        /// <remarks></remarks>
        private bool ValidateShapes(Microsoft.Office.Interop.Visio.Page page, Microsoft.Office.Interop.Visio.DataRecordset DRS, int intIndexOfShapeID)
        {
            bool blnValidated = true;

            if (DRS != null)
            {
                int[] lngRowIDs = DRS.GetDataRowIDs("");
                Microsoft.Office.Interop.Visio.Shape shp;
                foreach (int id in lngRowIDs)
                {
                    object[] RowData = DRS.GetRowData(id);
                    object   shapeID = RowData[intIndexOfShapeID];
                    try
                    {
                        shp = page.Shapes.ItemFromID(System.Convert.ToInt32(shapeID));
                    }
                    catch (Exception)
                    {
                        blnValidated = false;
                        var Result = MessageBox.Show("在页面中没有找到与形状ID \"" + System.Convert.ToString(shapeID) + "\" 相匹配的形状。请仔细检查记录的形状ID值。",
                                                     "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                        if (Result == Windows.Forms.DialogResult.OK)
                        {
                        }
                        else if (Result == Windows.Forms.DialogResult.Cancel)
                        {
                            //不再提示这条错误
                            goto endOfForLoop;
                        }
                    }
                }
endOfForLoop:
                1.GetHashCode();                  //VBConversions note: C# requires an executable line here, so a dummy line was added.
            }
            else
            {
                blnValidated = false;
            }
            return(blnValidated);
        }