【问题标题】:Change text only temporarily仅临时更改文本
【发布时间】:2017-11-12 07:45:02
【问题描述】:

我只想在演示期间(即显示幻灯片时)更改 Powerpoint 形状的文本,而不是永久更改文本以修改 PPT 文件。

目前我正在订阅该活动

Application.SlideShowNextSlide += OnNextSlide;

然后我像这样更改一个特定形状上的文本:

shape.TextFrame.TextRange.Text = "Hello world";

但是,当演示结束时,该文本在 PPT 文件中,Powerpoint 询问我是否要保存更改。

我想避免我的 Powerpoint 插件对文件进行更改。

【问题讨论】:

    标签: c# powerpoint shapes


    【解决方案1】:

    更新 基于史蒂夫的回答和您在 cmets 中的反馈。所以这里有一个想法给你:

    您为什么不直接执行我们提到的代码,添加 Steve 的行(这实际上是避免保存问题的好方法),并且由于您在最后恢复了原始值,然后只需通过程序函数保存在 C# 中无论如何。这样即使用户进行了任何更改,您也会保存文件...没有问题;)

    一步一步: 1) 正常运行 2)添加史蒂夫的评论 3) 使用我在下面提到的变量更改来解决问题 4) 在演示结束时无论如何都要保存,以便任何用户更改都与文档一起保存

    用于保存的代码 sn-p 位于 this 答案中,有据可查

    备注:此逻辑的剩余问题仅是当用户进行有意更改并且最终不想保存工作时,但这是上面未预见的情况。所有其他用户将不必遭受“想要保存?”问题:)


    尝试先保存以前的状态,然后在离开或关闭之前将旧值重新分配给它;)

    第一次做

    String oldValue = shape.TextFrame.TextRange.Text;
    

    如果您需要存储在框架之外,请使用 IO 临时存储在文件中或将变量传递给外部函数/变量值。然后做你的代码

    shape.TextFrame.TextRange.Text = "Hello world";
    

    完成之后再做一次

    shape.TextFrame.TextRange.Text = oldValue;
    

    或者从你离开的地方读取值:)

    希望对你有帮助

    【讨论】:

    • 这不起作用:演示文稿看起来和以前一模一样,但 PPT 仍然要保存,用户不知道为什么。
    • 再看一遍,也许更新可以帮助至少勾勒出部分解决方案;)
    • 最后看来我最好保持原样,将责任转交给用户。
    【解决方案2】:

    除了@oetoni 提出的建议之外,您还需要在进行每次更改之后或允许用户退出节目/演示之前将演示文稿的 .Saved 状态设置为 True。

    这样,PowerPoint 不会认为已进行任何更改,因此不会在用户退出时提供保存演示文稿。

    ActivePresentation.Saved = True
    

    【讨论】:

    • 这是一个非常糟糕的主意。用户所做的任何更改都将丢失。
    • 所以您想保存用户更改而不是您的更改?对
    • 还有....你为什么不做我们提到的代码,添加史蒂夫的行(这实际上是避免保存问题的好方法),因为你已经恢复了原始最后的值然后无论如何都只需通过 C# 中的编程函数保存。这样即使用户进行了任何更改,您也会保存文件...没有问题;)
    • @ThomasWeller 这在很大程度上取决于上下文。有可能(实际上几乎可以肯定,考虑到 SlideShow.NextSlide 事件 OP 的响应)这一切都在幻灯片放映视图中运行。用户不会在那里进行任何更改。
    • @oetoni:在这种情况下,我会保存用户所做的更改。如果用户不小心或故意(为了缩短演示文稿)删除了 7 张幻灯片,它们就会消失。我做不到
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多