NoTextEdit ShapeLock不起作用-OpenXML SDK

问题描述 投票:1回答:1

我正在尝试通过使用OpenXML SDK锁定TextBox。我已经尝试过这种方法,但是TextBox NoTextEdit无法正常工作。

public DocumentFormat.OpenXml.Presentation.Shape GenerateShape(string StrText)
{
    DocumentFormat.OpenXml.Presentation.Shape shape1 = new DocumentFormat.OpenXml.Presentation.Shape();

    DocumentFormat.OpenXml.Presentation.NonVisualShapeProperties nonVisualShapeProperties1 = new DocumentFormat.OpenXml.Presentation.NonVisualShapeProperties();
    DocumentFormat.OpenXml.Presentation.NonVisualDrawingProperties nonVisualDrawingProperties1 = new DocumentFormat.OpenXml.Presentation.NonVisualDrawingProperties() { Id = (UInt32Value)3U, Name = "ID",Hidden=true ,Description="Do not Remove" ,MCAttributes=null };

    DocumentFormat.OpenXml.Presentation.NonVisualShapeDrawingProperties nonVisualShapeDrawingProperties1 = new DocumentFormat.OpenXml.Presentation.NonVisualShapeDrawingProperties();
    Drawing.ShapeLocks shapeLocks1 = new Drawing.ShapeLocks() { NoTextEdit = true, NoGrouping = true,NoMove=true,NoSelection=true,NoEditPoints=true ,NoAdjustHandles=true ,NoRotation=true,NoChangeArrowheads=true,NoChangeAspect=true,NoChangeShapeType=true,NoResize=true};

    nonVisualShapeDrawingProperties1.Append(shapeLocks1);

    ApplicationNonVisualDrawingProperties applicationNonVisualDrawingProperties1 = new ApplicationNonVisualDrawingProperties();
    PlaceholderShape placeholderShape1 = new PlaceholderShape() { Type = PlaceholderValues.SubTitle, Index = (UInt32Value)1U   };

    applicationNonVisualDrawingProperties1.Append(placeholderShape1);

    nonVisualShapeProperties1.Append(nonVisualDrawingProperties1);
    nonVisualShapeProperties1.Append(nonVisualShapeDrawingProperties1);
    nonVisualShapeProperties1.Append(applicationNonVisualDrawingProperties1);
    DocumentFormat.OpenXml.Presentation.ShapeProperties shapeProperties1 = new DocumentFormat.OpenXml.Presentation.ShapeProperties();

    DocumentFormat.OpenXml.Presentation.TextBody textBody1 = new DocumentFormat.OpenXml.Presentation.TextBody();
    Drawing.BodyProperties bodyProperties1 = new Drawing.BodyProperties();
    Drawing.ListStyle listStyle1 = new Drawing.ListStyle();
    Drawing.TextShape shp = new Drawing.TextShape();

    Drawing.Paragraph paragraph1 = new Drawing.Paragraph();
    Drawing.EndParagraphRunProperties endParagraphRunProperties1 = new Drawing.EndParagraphRunProperties() { Language = "en-US" ,Dirty=false };
    paragraph1.Append(GenerateRun(StrText));
    paragraph1.Append(endParagraphRunProperties1);

    textBody1.Append(bodyProperties1);
    textBody1.Append(listStyle1);
    textBody1.Append(paragraph1);

    shape1.Append(nonVisualShapeProperties1);
    shape1.Append(shapeProperties1);
    shape1.Append(textBody1);
    return shape1;
}
public Drawing.Run GenerateRun(string StrText)
{

    Drawing.Run run1 = new Drawing.Run();

    Drawing.RunProperties runProperties1 = new Drawing.RunProperties() { Language = "en-US", Dirty = false  };
    runProperties1.SetAttribute(new OpenXmlAttribute("", "smtClean", "", "0"));
    Drawing.Text text1 = new Drawing.Text();
    text1.Text = StrText;
    Drawing.SolidFill solidFill2 = new Drawing.SolidFill();
    Drawing.SchemeColor schemeColor = new Drawing.SchemeColor();

    string y = System.Drawing.Color.Transparent.ToArgb().ToString("X");
    Drawing.RgbColorModelHex rgbColorModelHex2 = new Drawing.RgbColorModelHex() { Val = "FFFFFF" };//Set Font-Color to Blue (Hex "0070C0").

    solidFill2.Append(rgbColorModelHex2);
    runProperties1.Append(solidFill2);


    Color color = new Color() { Val = "365F91", ThemeColor = ThemeColorValues.Accent1, ThemeShade = "BF" };
    run1.Append(runProperties1);
    run1.Append(text1);

    return run1;

}

除编辑外,一切正常。 仍然用户可以通过双击来编辑TextBox值。如何避免这种情况?

是否有任何永久性解决方案可以防止编辑?请帮助我找到更好的解决方案。

提前感谢

c# openxml openxml-sdk
1个回答
1
投票

通过与MVP团队进行研究和沟通,我已经指出,无法保护TextBox免受编辑。正如评论中提到的[[Cindy Meister,

您是否可以在PowerPoint应用程序用户界面中执行此操作?如果不是,则Open XML无法做到。如果是,则可以。

如果不想更改文本,只需将其更改为图像,然后使用NoSelection=true/1NoMove=true/1属性将其锁定。如果启用这些属性,则用户无法删除或更改其位置。

供您参考:https://answers.microsoft.com/en-us/msoffice/forum/msoffice_powerpoint-mso_windows8-mso_2016/shape-lock-is-not-working/c1705b55-d2aa-4adb-b538-574ed2fc8eca?tm=1579265435636&page=1&rtAction=1579495439869

© www.soinside.com 2019 - 2024. All rights reserved.