Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在标题母版中查找占位符?_.net_Vsto_Powerpoint - Fatal编程技术网

.net 如何在标题母版中查找占位符?

.net 如何在标题母版中查找占位符?,.net,vsto,powerpoint,.net,Vsto,Powerpoint,我编写了一个PowerPoint 2010插件,允许用户创建成对的形状。这些对是同步的(例如位置、颜色、文本…)。这些对存储为以下类的对象: class Pair { Shape LeftShape { get; set; } Shape RightShape { get; set; } } 如果修改了一个形状,其中有一对包含该形状,则会更新另一个形状 可以在主布局上定义对。同步在主机上工作。如果一对由两个占位符组成,并且我基于主控形状创建了一张幻灯片,那么新形状当然不会同

我编写了一个PowerPoint 2010插件,允许用户创建成对的形状。这些对是同步的(例如位置、颜色、文本…)。这些对存储为以下类的对象:

class Pair
{
     Shape LeftShape { get; set; }
     Shape RightShape { get; set; }
}
如果修改了一个形状,其中有一对包含该形状,则会更新另一个形状

可以在主布局上定义对。同步在主机上工作。如果一对由两个占位符组成,并且我基于主控形状创建了一张幻灯片,那么新形状当然不会同步。有没有办法找到形状的主等效项,反之亦然?然后,算法将是:

 s1's modification is recognized
 if s1 is a placeholder
     find s1's equivalent in master -> m1
     look up the partner of m1 -> m2
     find the shape in the current slide that is based on m2 -> s2
     update s2
我查看了新形状的
Name
Id
属性。但它们与主形状的属性不同

顺便问一下,有没有一个好方法来确定形状是否是占位符?我目前的方法是查询
占位符格式
,如果形状没有占位符,它会引发异常。但这绝对不是一个好办法

可以在主布局上定义对

我很好奇:怎么做

形状的.Type属性将指示它是占位符还是其他形状类型

如果形状是msoPlaceholder(14),则它是一个占位符。在这种情况下,它的.placeholder Format.Type属性会告诉您它是哪种类型的占位符,如果它是一种可以容纳多种类型内容的类型,那么它的.placeholder Format.ContainedType会告诉您它是否包含图表、对象、图片等

<>您可以考虑使用标记来指示对。要使用当前选定的形状作为示例范围“标记”形状范围的成员,请执行以下操作:

Dim oSh As Shape
For Each oSh In ActiveWindow.Selection.ShapeRange
    oSh.Tags.Add "MagicPair", "TagValue"
Next

要返回其中一个图形对的另一半,请编写一个简单函数,查看当前幻灯片上的每个图形,并检查其MagicPair标记值是否与第一个图形的标记值匹配。

这是我在VBA中得到的结果,它与VSTO非常相似(如果不是相同的话):Steve Rindsberg?只有1分?欢迎来到SO!我很荣幸给你第一分+1:-)我已经考虑过使用标签了。标签是否从主幻灯片复制到普通幻灯片?Nico,不,标签不会从主幻灯片复制到普通幻灯片。另一方面,我不明白他们为什么要这样;如果你在代码中创建形状对,你可以在创建它们的时候“标记”它们。这就是问题所在。当我在主幻灯片中定义对,用户基于此主布局创建幻灯片时,占位符会被复制,我需要找出它们是否属于主幻灯片中的对,以便正确标记它们。@SteveRindsberg:我已将您的另一个答案转换为注释,因为堆栈溢出不是论坛样式,也就是说,你不能发布跟进/问题/评论作为回答。我还合并了你的不同账户;您可能想考虑向帐户添加OpenID,以避免始终创建新帐户。