これは実際にはそれほど複雑ではありません。この(私の)かなり古いポストは、メモリストリームから形状を削除する方法を説明します
http://unmanagedvisio.blogspot.co.at/2010/05/persisting-visio-shapes.html
あなたはステンシル上の既存のマスターから落下する場合(以下のコードは、それはかもしれない、「基本図形」を前提としていDoDragDropはビルトイン関数です(以下のコードはwinformsを前提としていますが、別のフレームワークでは別のアプローチが必要かもしれません)とにかく基本的なアイデアは、 "Master" visioオブジェクトがIDataObjectインターフェイスを実装しているので、ドラッグアンドドロップを行うには十分です。
リストビューに2つのアイテム、「Triang le "と" Circle "の場合、" triangle "アイテムをドラッグすると、それぞれ"三角形 "の形状と"円 "の円が得られるはずです。
private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
var item = (ListViewItem) e.Item;
var app = Globals.ThisAddIn.Application;
var myStencil = app.Documents.OpenEx("BASIC_M.VSS",
(short)VisOpenSaveArgs.visOpenDocked | (short)VisOpenSaveArgs.visOpenRO);
var masterToDrag = myStencil.Masters[item.Text];
var data = new DataObject(masterToDrag);
DoDragDrop(data, DragDropEffects.Copy);
}