1

我正在使用 Visio 和 c#,但我对来自 Visio 的形状有疑问。

我提供了一个带有字符串和 Visio 形状的字典

SortedDictionary<string, Visio.Shape> DicShapes 
                       = new SortedDictionary<string, Visio.Shape>();

DicShapes.Add("Pos3", shape_Pos3);

所以,如果我现在尝试使用 Visio.Shape,我得到了 COMExeption。

foreach (KeyValuePair<string, Visio.Shape> kvp2 in DicShapes) 
{
    if (kvp2.Key == "Pos3")
    {
        beginXCell.GlueToPos(kvp2.Value, 0.5, 1);
    }
}

谁能给我一个提示我做错了什么?

4

1 回答 1

2

既然你说你的钥匙是独一无二的,我建议

Visio.Shape selectedShape;

if (DicShapes.TryGetValue("Pos3", out selectedShape))
{
    beginXCell.GlueToPos(selectedShape, 0.5, 1);
}

而不是遍历整个SortedDictionary.

如果您必须处理非唯一键,您可以使用 linq 扩展方法提取所需的子集:

var filtered = DicShapes.Where(kvp => kvp.Key == "Pos3");
于 2012-05-04T07:11:20.803 回答