EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:自定义窗口状态消息(WinForms)

当应用程序使用“安全系统”时,典型的Windows Forms XAF应用程序窗口的状态栏会显示当前经过身份验证的用户名。

HowToCustomizeStatusDefault

本主题描述如何添加自定义状态消息以及如何用自定义消息替换默认消息。

添加自定义状态消息

WindowTemplateController在所有Windows启动,并更新当前窗口状态和标题。该WindowTemplateController公开WindowTemplateController.CustomizeWindowStatusMessages事件,被更新的窗口状态消息之前发生,并允许你修改它们。状态消息是XAF中字符串的集合。

要添加状态消息,请创建一个自定义窗口控制器,订阅CustomizeWindowStatusMessages事件并进行处理。在CustomizeWindowStatusMessages事件处理程序中,将一个自定义字符串添加到StatusMessages集合中。

using DevExpress.ExpressApp;
using DevExpress.ExpressApp.SystemModule;
// ...
public class CustomizeWindowController : WindowController {
    protected override void OnActivated() {
        base.OnActivated();
        WindowTemplateController controller = Frame.GetController<WindowTemplateController>();
        controller.CustomizeWindowStatusMessages  = Controller_CustomizeWindowStatusMessages;
    }
    private void Controller_CustomizeWindowStatusMessages(object sender,
    CustomizeWindowStatusMessagesEventArgs e) {
        e.StatusMessages.Add("My custom status message");
    }
    protected override void OnDeactivated() {
        base.OnDeactivated();
        WindowTemplateController controller = Frame.GetController<WindowTemplateController>();
        controller.CustomizeWindowStatusMessages -= Controller_CustomizeWindowStatusMessages;
    }
}

下图说明了与默认消息一起显示的自定义状态消息:

HowToCustomizeStatusCustom1

替换默认状态消息

要将当前状态消息集合替换为自定义消息集合,请先清除StatusMessages集合,然后再在CustomizeWindowStatusMessages事件处理程序中添加自定义消息。

private void Controller_CustomizeWindowStatusMessages(object sender, 
CustomizeWindowStatusMessagesEventArgs e) {
    e.StatusMessages.Clear();
    e.StatusMessages.Add("My custom status message");
}

下图说明了显示的自定义状态消息,而不是默认消息:

HowToCustomizeStatusCustom2

您可以在需要时使用WindowTemplateController.UpdateWindowStatusMessage方法刷新状态消息。

注意

本主题仅与Windows Form应用程序有关。尽管WindowTemplateController控制器是独立平台的系统模块内置控制器,但状态消息在ASP.NET应用程序中是不可见的。

要将文本消息以外的任何内容放入状态栏,请考虑创建自定义窗口模板或订阅WindowTemplateController.CustomizeStatusBar事件并直接访问该栏。请参阅“如何:访问Bar Manager”和“如何:访问Ribbon Control”文章和XtraBars产品文档。

相关文章

转载保留此链接,注明出处