如何在Visio C#中编写Shape的属性?

时间:2013-07-19 12:16:10

标签: c# visio shapes

好吧,我一直在尝试在形状中创建一个新的自定义属性,但是,当我尝试更改Label的名称时,我只能编写数字。你能告诉我如何在C#中或者在VB中这样做我能得到一个提示吗?

我的代码是:

//First I create the row
shape.AddRow((short)VisSectionIndices.visSectionProp,(short) (iRow + 1), (short) VisRowTags.visTagDefault);

//And now I try to write the Label
shape.CellsSRC[(short)VisSectionIndices.visSectionProp, (short)(iRow + 1), (short)VisCellIndices.visCustPropsLabel].Result[VisUnitCodes.visNoCast] = 123456789

但是,当Result方法只接受boolean作为输入时,我不知道如何写一个字符串...

提前致谢!

3 个答案:

答案 0 :(得分:2)

我一直在研究如何设置自定义形状数据属性的字符串值。 让它像这样工作:

var newPropertyValue = "cool new value";
tstShape.Cells["Prop.SuperCustomPropertyName"].FormulaU = "\"" + newPropertyValue + "\"";

免责声明我不是Visio Automation的专家,但它适用于我的情况。 我正在使用visio 2010和studio 2010 希望它有所帮助。

答案 1 :(得分:1)

您可以使用以下代码:

private void AddCustomProperty(Microsoft.Office.Interop.Visio.Shape shape, string PropertyName, String propertyValue)
        {
            try
            {

                short customProps = (short)VisSectionIndices.visSectionProp;      

                short rowNumber = shape.AddRow(customProps, (short)VisRowIndices.visRowLast, (short)VisRowTags.visTagDefault);

                shape.CellsSRC[customProps, rowNumber, (short)VisCellIndices.visCustPropsLabel].FormulaU = "\"" + PropertyName + "\"";

                shape.CellsSRC[customProps, rowNumber, (short)VisCellIndices.visCustPropsValue].FormulaU = "\"" + propertyValue + "\"";


            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show("Error: " + e.Message);
            }

        }

答案 2 :(得分:0)

结果不是读/写。您要做的是将单元格的FormulaU属性设置为标签名称。 Result属性只计​​算单元格的公式并返回结果,这就是为什么必须为返回值提供单位的原因。

此外,AddRow方法返回添加的行的实际行号,该行不一定是您指定的行。对于具有可命名行的结构图部分,例如“自定义属性”部分,Visio可能会忽略您请求的行并将其粘贴在底部。