2012-05-04 5 views
1

私はVisioとC#を使っています。Visioの図形に問題があります。C#辞書からVisio Shapeを使用しようとしました

私は今、私はCOMExeptionを得たVisio.Shapeを使用しようとしていた場合、私は、だから、文字列と辞書とVisio図形

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

DicShapes.Add("Pos3", shape_Pos3); 

を提供しています。

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

誰でも私が間違っていることをヒントできますか?あなたはあなたの鍵が一意になることを述べているので

+0

あなたが最初のCOMエラーを調査する必要があります。それは何ですか?どの線? –

+0

by beginxCellとkvp2.valueはエラーを生成します。 – Moosli

+0

あなたはあなたの 'SortedDictionary'に重複したキーを扱うか、あなたのキー* Pos3 *はユニークではないでしょうか? – Filburt

答えて

2

私は、全体のSortedDictionary上の代わりに反復処理の

Visio.Shape selectedShape; 

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

をお勧めしたいです。

あなたは非ユニークキーに対処する必要が場合は、LINQの拡張メソッドを使用して、所望のサブセットを抽出することができます:

var filtered = DicShapes.Where(kvp => kvp.Key == "Pos3"); 
+0

ありがとうございます、今すぐ動作します。 :) – Moosli

関連する問題