Toolbar上加载InkEraser工具正常,但是以命令行方式调用无法实现擦除功能

ToolbarControl上加载ControlsInkEraserToolClass 工具可正常使用,但是以命令方式调用无法擦除。
调用代码:
ICommand eraser = new ControlsInkEraserTool();
eraser.OnCreate(axMapControl1.Object);
this.axMapControl1.CurrentTool = eraser as ITool;
已邀请:

朱新颖

赞同来自:

【问题分析】:
因为ControlsInkPenTool和ControlsInkEraserTool都是包含子类型(ICommandSubType)的命令,有子类型的命令是一个命令组(http://resources.arcgis.com/en ... 00000),因此使用时需要使用ICommandSubType.SetSubType指定其subtype,不能将命令组以调用普通命令的方式调用。
【解决办法】:
ControlsInkEraserTool包含4个subtypes (http://resources.arcgis.com/en ... 00000/). 需要使用ICommandSubType指定

示例代码:
private void selectEraserTool(int size)
        {
            ICommand eraser = new ControlsInkEraserTool();
            ICommandSubType subs = eraser as ICommandSubType;
            subs.SetSubType(size);
            eraser.OnCreate(axMapControl1.Object);
            this.axMapControl1.CurrentTool = eraser as ITool;
        }

        private void thinEraserToolStripMenuItem_Click(object sender, EventArgs e)
        {
            selectEraserTool(1);
        }

        private void middleEraserToolStripMenuItem_Click(object sender, EventArgs e)
        {
            selectEraserTool(2);
        }

        private void thickEraserToolStripMenuItem_Click(object sender, EventArgs e)
        {
            selectEraserTool(3);
        }


要回复问题请先登录注册