在Pro SDK中,可以通过dackpane的Hide()方法,对面板进行隐藏。
DockPane pane = FrameworkApplication.DockPaneManager.Find("pane_name");
pane.Hide();

但有个同事,在自定义的module中,希望在初始化方法中对指定的面板进行关闭,但使用Hide方法后,面板依旧显示。

究其原因,是Pro中进行布局还原导致的。

工程文件中,会将控件的布局信息进行存储,在下一次打开工程的时候,根据布局状态,将控件还原为上一次的状态。

当使用Module以autoload的方式加载时,会随core模块一起进行初始化,而非按需初始化,所以自定义模块的初始化方法执行的时间点会比较靠前。而对控件的状态控制,也会被Pro内部的布局还原而覆盖。

为了应对需求,提供两种方式来进行处理:

1、在工程关闭时进行后处理

protected override bool Initialize()
{
ArcGIS.Desktop.Core.Events.ProjectClosingEvent.Subscribe((p) =>
{
//相关的控件控制
return Task.FromResult(0);
});
}

这样,工程保存布局信息,就是复合需求的,再次打开时就无需前处理了。

2、在初始化时,添加异步前处理

protected override bool Initialize()
{
ArcGIS.Desktop.Core.Events.ProjectOpenedEvent.Subscribe((p) => { Task.Run(() => {
System.Threading.Thread.Sleep(10000);
FrameworkApplication.Current.Dispatcher.Invoke(() =>
{
//相关的控件控制
});
});
});
}

这种方式更符合预期些,但在触发的时间上,需要在布局还原之后触发,由于Pro并没有提供相应的事件,比较难精准的控制。我这里采用了固定时长的异步等待的方式,但不是个很好的方案,最好尝试其他更为合适的事件,并结果状态验证,来进行更准确的控制。

关于Pro addin中,控制dockpane的状态的更多相关文章

  1. ArcGIS Pro Add-In插件开发[ArcGIS Pro SDK for .NET]

    本文基于 Windows7 + VS2019 + .NET Framework 4.8 + ArcGIS Pro 2.5 开发和撰写. 目录 开发环境配置 获取ArcGIS Pro 安装VS2019 ...

  2. 在Office Add-in中实现单点登陆(SSO)

    作者:陈希章 发表于 2017年12月27日 这篇文章经过多次修改,终于在今天晚上写完了,演示用的范例代码也终于跑通了.因为这个SSO的功能目前只是Preview的状态,所以本篇文章严格参考了官方的文 ...

  3. Apache beam中的便携式有状态大数据处理

    Apache beam中的便携式有状态大数据处理 目标: 什么是 apache beam? 状态 计时器 例子&小demo 一.什么是 apache beam? 上面两个图片一个是正面切图,一 ...

  4. 在64位的ubuntu 14.04 上开展32位Qt 程序开发环境配置(pro文件中增加 QMAKE_CXXFLAGS += -m32 命令)

    为了能中一个系统上开发64或32位C++程序,费了些周折,现在终于能够开始干过了.在此记录此时针对Q5.4版本的32位开发环境配置过程. 1. 下载Qt 5.4 的32位版本,进行安装,安装过程中会发 ...

  5. GPIO 和中断控制 LED 的状态

    中断的概念 中断是 MCU 强行从正常的主任务切换到由某些内部或外部条件的紧急任务.中断的优先程度远远高于主任务,MCU 会暂时把主任务挂起,转而处理中断任务,之后再执行主任务. 引起中断的外部条件来 ...

  6. GPIO 和轮询控制 LED 的状态

    GPIO 概念 I/O 是输入(Input)和输出(Output)的意思,GPIO(General Purpose I/O)是基本输入输出,是 I/O 的最基本形式.STM32F103ZET6 大概有 ...

  7. Java经典实例:在正则表达式中控制大小写

    默认是:区分大小写的: 传递标志参数:Pattern.CASE_INSENSITIVE,以说明匹配时忽略大小写:如果你的代码运行在不同的地区那么你应该再添加一个Pattern.UNICODE_CASE ...

  8. android开发之在activity中控制另一个activity的UI更新

    转自:http://blog.csdn.net/jason0539/article/details/18075293 第一种方法: 遇到一个问题,需要在一个activity中控制另一个acitivit ...

  9. android 自定义adapter和线程结合 + ListView中按钮滑动后状态丢失解决办法

    adapter+线程 1.很多时候自定义adapter的数据都是来源于服务器的,所以在获取服务器的时候就需要异步获取,这里就需要开线程了(线程池)去获取服务器的数据了.但这样有的时候adapter的中 ...

  10. ubuntu中vi在编辑状态下方向键不能用的解决

    ubuntu中vi在编辑状态下方向键不能用,还有回格键不能删除等,我们平时习惯的一些键都不能使用. 解决办法: 可以安装vim full版本,在full版本下键盘正常,安装好后同样使用vi命令. 安装 ...

随机推荐

  1. CSS & JS Effect – Image hover animation

    效果 效果来自: webflow 的一个模板 需求解释 有 3 给元素, 图片, overlay(黑影), link mouse enter 的时候, 图片要 zoom in. overlay 要 f ...

  2. 完美转发(模板)--T&&

    在C++模板编程中,完美转发(Perfect Forwarding)是一种技术,旨在保留函数参数的值类别,即在将参数传递到另一个函数时,无论参数是左值还是右值,都能够保持它的原始性质,而不会因为转发丢 ...

  3. `operator++(int)` 和 `operator++()`

    operator++(int) 和 operator++() 是 C++ 中重载的两个不同的自增运算符函数,它们分别用于后置自增和前置自增.它们的区别在于调用方式以及自增行为的不同. 1. 前置自增运 ...

  4. android 性能优化 -systrace

    简介: Systrace允许监视和跟踪Android系统的行为(trace).它会指明系统都在哪些工作上花费时间.CPU周期都用在哪里,甚至可以看到每个线程.进程在指定时间内都在干嘛.它同时还会突出观 ...

  5. Android复习(三)清单文件中的元素——>application

    <application> 语法: <application android:allowTaskReparenting=["true" | "false ...

  6. flink jobmanager 终止任务失败问题

    flink jobmanager 终止任务失败问题 :root { --default-font: ui-sans-serif, -apple-system, BlinkMacSystemFont, ...

  7. 华为IPv6 GRE隧道

    IPv6 over IPv4 GRE封装隧道 实验目标: 该实验参考了华为官网案例配置 https://support.huawei.com/enterprise/zh/doc/EDOC1000097 ...

  8. vue3 + h5 构建流程

    目录 目录 初始化项目架构 技术栈 工具类 环境 搭建流程 初始化项目 初始化git 运行项目 配置 server环境 vite.config.ts 配置项目环境 增加三个文件 修改package.j ...

  9. 深度学习优化器:《Lookahead Optimizer: k steps forward, 1 step back》

    深度学习优化器:<Lookahead Optimizer: k steps forward, 1 step back> 项目地址: https://github.com/michaelrz ...

  10. 2.9 使用系统光盘修复Linux系统

    如果系统错误已经导致单用户模式不能进入了,那么是否需要重新安装Linux 系统?不用着急,为了应对单用户模式也无法修复的错误,Linux 系统提供了 rescue 救援(光盘修复)模式. rescue ...