WPS 基础接口 > 文字 API 参考 > Document > 事件 > Document.XMLBeforeDelete 事件
用户从文档中删除 XML 元素时发生。如果同时从文档中删除了多个元素(例如,剪切和粘贴 XML 时),则删除的每个元素都会激发该事件。

语法

Private Sub 表达式_XMLBeforeDelete(DeletedRange, OldXMLNode, InUndoRedo)

表达式   一个代表 Document 对象的变量,该对象已在类模块中使用 WithEvents 关键字声明。有关配合使用事件与 Document 对象的信息,请参阅 配合使用事件与 Document 对象。

参数

名称 必选/可选 数据类型 说明
DeletedRange 必选 Range 正在被删除的 XML 元素的内容。如果仅有一个元素被删除且不关联文本,则 DeletedRange 参数不存在,因此将被设置为 Nothing
OldXMLNode 必选 XMLNode 正在被删除的节点。
InUndoRedo 必选 Boolean 如果该参数值为 True,则表示已使用 WPS 中的“撤消”“恢复”功能执行了该操作。

说明

如果 InUndoRedo 参数为 True,则不要在 XMLAfterInsertXMLBeforeDelete 事件运行时更改文档中的 XML。

如果 InUndoRedo 参数为 False,则可以在文档中插入和删除 XML,但需小心不要造成 XMLAfterInsertXMLBeforeDelete 事件不断相互取消,从而导致无限循环。可以使用全局 Boolean 变量防止出现无限循环,并在错误处理程序的起始处进行检查,如以下示例所示。

示例代码
let blnIsXMLDeleteRunning

function Document_XMLBeforeDelete(DeletedRange, OldXMLNode, InUndoRedo) {
    if(blnIsXMLDeleteRunning == false) {
        blnIsXMLDeleteRunning = true
        //Insert your event code here.
    } else {
        return 
    }
}

示例

以下示例在 XML 元素被删除时运行。如果元素中包含文本,则显示一条信息询问用户是否要删除元素所包含的文本。如果用户单击“否”响应,则元素的内容被复制到剪贴板上。

示例代码
function Document_XMLBeforeDelete(DeletedRange, OldXMLNode, InUndoRedo) {
    let intResponse

    if(InUndoRedo == false) { 
        if(DeletedRange) {
            intResponse = MsgBox("Are you sure you want to delete the text " + "\r\n" + DeletedRange.Text, jsYesNo)

            if(intResponse == jsResultNo) {
                DeletedRange.Copy()
                MsgBox("The text has been copied to the Clipboard." + "\r\n" +
                    "Position your cursor where you want to insert it, " +
                    "\r\n" + " and click Paste on the Edit menu.")
            }
        }
    }
}


请参阅