C#中OnRender()显示MessageBox()的方法

微软WPF Ribbon控件深度解析:工业级UI契约与企业实践 Ribbon控件是WPF平台中面向高频操作场景的标准化UI组件,其核心在于将Office风格交互抽象为可编程、可主题化、可命令驱动的UI契约。它基于WPF依赖属性、命令系统与D3DImage硬件渲染管线构建,区别于Fluent Ribbon等第三方库的视觉模拟路径,提供编译时主题注入、生命周期感知资源管理及意图识别型事件模型。技术价值体现在跨Windows XP/7/10的原生主题适配、低延迟Tab切换(<11ms)、自动权限驱动菜单可见性等工程优势。典型应用于ERP、MES、文档协作等需强状态同步与高可访 阅读详情

 

     如果在OnRender()中直接显示MessageBox时,会出现这个异常错误:the exception message is "Dispatcher processing has been suspended, but messages are still being processed.".

    所以,在这里我采用BeginInvoke()实现这个功能。

protected override void OnRender(DrawingContext drawingContext)

{

……

System.Windows.Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new ShowErrorMessageEvent(ShowErrorMessage));

}

 

private delegate void ShowErrorMessageEvent();

private void ShowErrorMessage()

{

MessageBox.Show("Error string!");

}

 

      下面是msdn关于Dispatcher和BeginInvoke的介绍:

       Dispatcher 可为特定线程维护其按优先顺序排列的工作项队列。

       当在线程中创建了 Dispatcher 时,它将成为可与该线程关联的唯一 Dispatcher,即使 Dispatcher 已经关闭。

       如果尝试获取当前线程的 CurrentDispatcher,而此时该线程没有关联的 Dispatcher,则将创建一个 Dispatcher。

       如果 Dispatcher 已经关闭,它将无法重新启动。

       在 WPF 中,DispatcherObject 只能通过与它关联的 Dispatcher 进行访问。例如,后台线程不能更新与 UI 线程中的 Dispatcher 关联的 Button 内容。为了使该后台线程能够访问 Button 的 Content 属性,该后台线程必须将此工作委托给与该 UI 线程关联的 Dispatcher。这可以通过使用 Invoke 或 BeginInvoke 来完成。

        Invoke 是同步操作,而 BeginInvoke 是异步操作。该操作将按指定的 DispatcherPriority 添加到 Dispatcher 的事件队列中。 BeginInvoke 是异步操作;因此,调用之后控制权会立即返回给调用对象。

        BeginInvoke 返回一个 DispatcherOperation 对象,当委托位于事件队列中时,该对象可用于与委托进行交互。

        如果按同一个 DispatcherPriority 调用多个 BeginInvoke,将按调用发生的顺序执行它们。

        如果对某个已关闭的 Dispatcher 调用 BeginInvoke,则返回的 DispatcherOperation 的状态属性将设置为 Aborted。

手把手教你用Python+GDAL处理0.5米吉林一号卫星影像(附代码) 本文详细介绍了如何使用Python和GDAL处理吉林一号0.5米高分辨率卫星影像,包括环境配置、数据预处理、分辨率融合、植被指数计算及地物分类等关键步骤。通过实战代码示例,帮助开发者高效处理大尺寸遥感数据,解决资源崩溃和算法选择问题,提升遥感影像分析能力。 阅读详情

相关推荐

从零到一:Silvaco中跨导曲线的自动化脚本实现

本文详细介绍了如何使用Python脚本在Silvaco中实现跨导曲线(gm曲线)的自动化分析,包括数据加载、跨导计算和结果可视化。通过自动化处理Id-Vg曲线,显著提升半导体器件工程师的工作效率,特别适用于工艺优化和DOE分析。文章还提供了批量处理和关键参数提取的高级技巧,帮助工程师快速掌握Silvaco脚本开发。

nn3456的博客 568

WPF中OnRender使用(一)

Viewport为我们指示了如何将图形投射到绘制表面,如果我们将绘制表面的左上角定义为(0,0),右下角定义我(1,1),那么可以设置一个相当与该值的矩形(Rect)来指示我们的图形应该被投射到哪里。这也是Shape与Geometry的区别。此外,DrawingBrush还有一个很有意思的属性ViewBox(继承于TileBrush),它指示了只取图形中的哪一部分作为观察区域(这与Clip不同),它的定义方式与Viewport类似,但它不是相对于绘制表面而是相当于我们的图形的。

qq_40098572的博客 2481

【隐私计算】从本地加法到在线乘法:Beaver Triple如何重塑算术秘密分享的运算效率

本文深入探讨了Beaver Triple在算术秘密分享中的关键作用,显著提升了隐私计算中的乘法运算效率。通过对比加法与乘法的实现差异,详细解析了Beaver Triple的预处理机制和在线计算优化,展示了其在减少通信量和计算时间方面的革命性突破。

weixin_29227585的博客 436

深入了解WPF布局和渲染

WPF文档可能非常简约且令人困惑,尤其是在涉及布局和呈现如何真正工作以及您需要在代码中做什么以充分利用它时。如果您对技术细节感兴趣,本文适合您。

寒冰屋的专栏 1745

告别手动群发!用IDA Pro和CE搞定企业微信4.1.38.6011的HOOK开发(附完整代码)

本文详细介绍了如何利用IDA Pro和Cheat Engine进行企业微信4.1.38.6011的HOOK开发,实现自动化群发功能。从逆向工程环境配置、关键函数定位到HOOK框架设计,提供完整代码示例,帮助企业提升运营效率。

weixin_42533120的博客 479

Zabbix 简介、优缺点、基础原理

(8条消息) Zabbix 的基础概念、原理和架构_Lee木木的博客-优快云博客_zabbix架构类型Zabbix 的基础概念、原理和架构_Lee木木的博客-优快云博客_zabbix架构类型 --------------------------------------------------------------------------------------------------------------------------- 一、Zabbix 简介 Zabbix是由A...

weixin_50196615的博客 2037

WPF:UIElement以及FrameworkElement中的OnRender,LayoutUpdated事件的运行顺序

测试如下事件和方法: UIElement: OnRender方法。 LayoutUpdated事件。 FrameworkElement: OnMeasureOverride方法。 OnArrangeOverride方法。 Loaded事件。 Initialized事件。 以及自定义控件中的依赖属性设置。 代码: class TestControl: Cont...

sinat_31608641的博客 2451

contextcapture多区块点云_多源点云数据融合的建筑物精细化建模

本文内容来源于《测绘通报》2020年第8期,审图号:GS(2020)3611号多源点云数据融合的建筑物精细化建模王树臻1, 郑国强1, 王光生1, 胡玉民2, 张德怀2, 亓伟3 ...

weixin_36301639的博客 1825

关于GMap的GMapMarker在Winform的重载函数OnRender()与其Mapcontrol.CreateGraphics()的渲染偏差(RenderOffset)的计算

问题现象 “GMap的GMapMarker本身提供的重载函数OnRender(graphics g)中的 Graphics与 自己用 Mapcontrol.CreateGraphics()创建的 Graphics 之间有一个渲染偏差!” 原因 刚开始很郁闷,没办法在指定的地方方便的使用 FromLatLngToLocal() 去绘制想要的东西。瞎捣鼓的半天发现,前者以GMapMarker经纬度的点为Graphics的原点(0,0),而后者则是常见的以屏幕左上角为Gr...

huashi33的博客 475

Autosar MCAL-S32K324 Fee配置-基于EB

Autosar MCAL S32K324 Fee配置详解

赞的博客 1545

31、车载通信中的可见光通信(VLC)技术解析

本文详细解析了车载通信中可见光通信(VLC)技术的应用背景、优势及发展前景。对比传统RF通信技术(如DSRC),VLC利用LED照明设备实现高效、安全的车辆与车辆、车辆与基础设施之间的通信,具有频谱资源丰富、安全性高、无电磁干扰等优势。文章还探讨了VLC在交叉口交通控制、高速公路通信、自动驾驶等场景的应用潜力,展望了其在未来智能交通系统中的重要作用。

hill8的博客 318

[WPF] 继承 FrameworkElement 并覆写 OnRender

[WPF] 继承 FrameworkElement 并覆写 OnRender

Cloud Hsu的专栏 6378

人形机器人电路板和算法分析

人形机器人电路板与算法深度剖析 电路板领域:人形机器人电子系统分为计算、驱动、感知、能源、通信五大模块。主控板采用高性能SoM(如NVIDIA Jetson AGX Orin),需满足严格电源完整性(PDN)与信号完整性(SI)要求;关节驱动板集成MCU、GaN/SiC功率器件及高精度编码器接口,采用刚柔结合PCB以适应狭小空间。挑战包括热-振可靠性(85°C/10G振动)、高密度互连(3mil线宽)及EMC兼容性。 算法领域:运动控制依赖MPC(模型预测控制)与强化学习(RL),实现实时动态平衡;感知算法

几十年资深高级架构师,技术专家的技术笔记。专注C、Java、Python、微服务、云原生、AI工程化及高并发系统分布式架构实战,分享源码剖析、性能调优与架构治理经验。 306

c# 使用OpenTK开发举例

c# 使用OpenTK开发举例

xie__jin__cheng的博客 2756

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

解决WPF中重载Window.OnRender函数失效问题

今天实验一个绘图算法的时候,偶然发现重载Window.OnRender的方法是没有效果的。 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } p...

weixin_34258078的博客 304

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

在默认Window中重写OnRender方法

public MainWindow() { InitializeComponent(); this.Background = null; } protected override void OnRender(DrawingContext drawingContext) {

zhaobaojun 1362

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WPF 的一个平移缩放查看控件(鼠标滚轮对内容进行缩放查看)

wpf的自定义控件。具体事件加不加Preview根据实际情况改就行。这里只提供一个能用的代码。不能运行,跑不起来?人和代码,有一个能跑就行。事已至此,应该已经能跑起来了,能跑就行......

wynneira的博客 798

关于WPF的2000件事 02--WPF界面是如何渲染的?

WPF应用程序在运行时会自动检查显示的能力并分配一个相应的渲染层值。 第0层,没有硬件加速,所有渲染使用软件完成。相当于使用低于7.0版本的DirectX。 第1层,部份采用硬件加速,例如:径向梯度计算,3D光线计算,文本渲染,3D抗锯齿。相当于使用低于7.0版本到9.0的DirectX。 第2层,完全采用硬件加速,相当于高于9.0版本的DriectX. 如何确定当前层: ...

weixin_30778805的博客 191

UIElement重写OnRender方法重绘控件的外观

public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); RectangleUIElement ab = new RectangleUIElement();

zhaobaojun 4815

关于WPF画图性能问题

最近用wpf画心电图,尝试了wpf所有的方法,性能依然不能满足要求,后来发现舍本逐末了,现在记录下来,以免以后再走弯路。 首先要明白wpf管理的机制,如果你往canvas画一条线,一般就是 new Line() 然后添加到canvas里面,这样做的话就算你用轻量级的Polyline,或者使用DrawingVisual的方法。对于高频数据来说(比如心电波形)都会很卡,这里面使用inkcanvas添

学无止境 1万+

ExtJS中的onRender和render

4767

UIElement.OnRenderSizeChanged

When overridden in a derived class, participates in rendering operations that are directed by the layout system.This method is invoked after layout update, and before rendering, if the element's Ren

idebian的专栏 1362
上一篇: WinForm数据绑定--BindingContext
下一篇: C#中string转换成字节byte的处理方法
wmjcom
博客等级 码龄24年 71粉丝 48原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值