Programmatically create and display Notifications

本文详细介绍了Windows Mobile操作系统中Notification组件的使用方法,包括提示框的各种属性设置、显示和隐藏方式,以及如何监听提示框状态的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原博文传送门

 

 

      Windows Mobile(下文简写为WM)操作系统提供了一个通知的特性,它可以被用来在当前表单(form)中显示一个土司(toast)形状或者弹出的气球形状的系统提示(prompt)(具体显示为何形状取决于操作系统版本),甚至你的程序在后台运行也可以显示该提示。这种后台任务完成就由该应用通知用户或者做一些别的展示的方式是非常理想的。


Notification

 

 

平台支持

      提示框只被WM专业版或者传统版(也就是Pocket PC)设备支持,WM标准版(也就是Smartphone)设备不支持该组件。如果你开发一个带有该提示框的CFCompact Framework)应用,要注意,若是编译时的目标平台为WM标准设备时,会在执行应用时引起一个NotSupportedException的异常。

      使用Microsoft.WindowsCE.Forms.Notification 类需添加 Microsoft.WindowsCE.Forms.dll 的引用。

一种最简单的方式是从“工具箱”里拖一个Notification组件放到你的设计器里来获取该引用,然后就可以配置你的提示框了。以上操作会自动的添加需要的引用到你的工程里,并且可以通过“属性”窗体来配置提示框的属性。

提示框属性(Notification Properties

它有以下属性:

 

Caption ——显示在提示框最上面的标题栏里的文字。

Text —— 显示在提示框最主要的地方,可以包含HTML的内容,这允许你格式化你需要显示的内容,比如不同颜色的文字,等等。

Critical —— 一个布尔值,如果其设置为true则表示这个提示非常急切。呈现的效果就是提示框的边框颜色不同了,更为醒目。

Icon —— 显示在导航条上的图标样式,用户只要轻轻的点击这个图标,被隐藏的提示框就会显示出来,所以这个图标需要能典型的代表其含义。

InitialDuration —— 组件可见的时间,秒为单位,组件隐藏时不算。当时间过期时,提示会自动隐藏,此时用户必须重新点击导航栏里的图标让它再次显示。如果该值被设置为0,则不会弹出下方的提示框而是只在导航栏显示图标。

Visible —— 设置其为true,则提示框的气泡会显示在屏幕上。


显示提示

显示提示和创建一个Notification类实例一样简单,为了需要的效果设置属性,然后设置Visible属性为true,以下是代码:

 

 

 

      有一个很重要的事情这里要提一下,我们在button1_Click方法中没有用到本地变量。我们采取该做法是由于其CLR(通用语言运行库)和垃圾回收机制。虽然使用本地变量也可以运行,但是无法得到保证(guaranteed)并且潜伏(potentially)着引起不可预测(unpredictable)反应的危险。(下面的章节会有更多内容)

      还有一个值得进一步讨论的是Icon。你可以用很多方法储存一个icon。最简单的方式是使用VS2005工程想到提供的Resources.resx文件来帮你创建并且保存该icon,下面的截图展示了它在解决方案里的位置。你打开它就可以添加新的icon,并且这些资源可以在Properties.Resources 类中通过强类型属性被关联。

 


在Resources.resx里面添加icon

 

 

隐藏提示框

      这里有两种方法移除一个屏幕上显示的提示框。你可以简单的将Visible属性设为false,如下代码所示:

 

      方法有一个好处,如果你打算重新显示该组件,只要简单的设置Visible属性为true即可。

      另外一个方法(alternative approach)则是访问Dispose方法,示例代码如下:

 

      一旦你这么做了,那么该组件则会被清除,你不能简单的通过设置Visibletrue来让它重新显示,除非重新构造一个新的Notification类的实例。

      之前我们提到了你不能用局部变量引用你的Notification对象。最后的代码例子展示了原因。如果你在button1_Click方法里保存一个notification的局部变量,当方法执行结束的时候垃圾回收器会把这个变量标记潜在的垃圾。如果开始回收垃圾,并且决定回收该引用(译者注:不一定会马上回收该引用,而是有一个决策表,当其有需要被回收的时候才会发生对其引用内存的清理,参考JAVA里面GC机制,有强弱引用,有不同的回收优先度),然后垃圾回收其就会访问Dispose方法,然后它就会从屏幕上被移除。如果在该表单(form)里使用成员变量去引用它的实例则可以保持该引用一直“存活”,从而不被垃圾收集器给摧毁,直到这个表单关闭(译者注:也就是某表单调用其自己的Dispose,会自动调用成员变量的Dispose,而隐藏表单时不会调用Dispose)。


检测提示框何时被隐藏

      当提示的气泡被显示或者隐藏的时候会触发Notification类的BallonChanged事件。

      如下代码,展示了如何在气泡被隐藏有所表示:

 

      提供一个简单的程序下载。

      下载传送门:notificationtest.zip

      该链接直接连至原作者的博客,如果无法下载,可以e-mail给我索取该文件(mailto:yin.yan@amdocschina.cn

     

      它展示了Notification类的使用方法,并且可以让你尝试改变其属性并且观察提示框显示上有什么变化。

      这里我们少讨论了Notification的成员,就是 ResponseSubmitted 事件方法。它能够处理用户在提示框里操作回馈的信息。比如在一个notification里的HTML文本,你可以创建一对radio按钮,和一个文本框,通过ResponseSubmitted事件,你可以用用户在这里输入的值来改变你程序的状态,在下篇博文里会讨论该主题。

 

### 创建自定义符号的过程 在 LTSpice 中创建新符号是一项常见的操作,用于表示特定的组件模型。以下是关于如何完成这一过程的具体说明: #### 定义符号文件 为了创建一个新的符号,首先需要准备一个 `.asy` 文件,该文件描述了图形化的符号外观[^1]。可以通过编辑现有的 `.asy` 文件或者手动绘制新的符号来实现。 #### 关联 Spice 模型 当符号被创建之后,必须将其与对应的 SPICE 模型关联起来。这一步骤通过设置 `SpiceModel` 属性完成。属性值应指定为包含实际模型数据的文件名。 ```plaintext SpiceModel: <name of file including the spicemodel> ``` 上述命令中的 `<name of file including the spicemodel>` 应替换为实际的模型文件路径或名称。 #### 使用 Symbol Editor 编辑器 LTSpice 提供了一个内置工具——Symbol Editor(符号编辑器),可以用来设计和修改这些 `.asy` 文件。启动方法如下: - 打开 LTSpice 主界面。 - 转到菜单栏并选择 **Tools -> Symbol** 或者直接按快捷键 Ctrl-S 来打开符号编辑窗口。 在此编辑环境中,用户能够精确调整线条、文字标签以及其他视觉元素的位置和样式以匹配所需的电路元件表现形式。 #### 测试新建符号 最后,在成功保存所制作的新符号后,建议立即在一个简单的测试电路上验证其功能是否正常工作。这样可以帮助确认所有的参数配置无误以及电气特性符合预期效果。 ```python # Python 示例代码仅作为流程辅助理解,并非必要部分 def test_custom_symbol(symbol_name, spice_model_file): """ A function simulating how you might programmatically verify a new custom symbol. Args: symbol_name (str): The name given to your newly created symbol. spice_model_file (str): Path or reference string pointing at associated .lib model. Returns: bool: True if everything works fine; otherwise False indicating an issue found during testing phase. """ try: # Simulate loading both files into memory space for cross-referencing purposes here... pass except Exception as e: print(f"Error encountered while validating '{symbol_name}': {e}") return False else: return True ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值