2

好吧,我一直在尝试在形状中创建一个新的自定义属性,并且我以某种方式进行了管理,但是,当我尝试更改标签的名称时,我只能写数字。你能告诉我如何在 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 方法只接受布尔值作为输入时,我不知道如何在那边写一个字符串......

提前致谢!

4

3 回答 3

2

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

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

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

于 2013-07-19T17:41:35.393 回答
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);
            }

        }
于 2015-07-01T13:17:20.480 回答
0

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

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

于 2013-07-22T13:21:31.623 回答