【问题标题】:Centered Message Box .NET - Progress Developer Studio for OpenEdge 11.6 (32-bit)居中消息框 .NET - 适用于 OpenEdge 11.6(32 位)的 Progress Developer Studio
【发布时间】:2017-05-28 13:46:53
【问题描述】:

我一直在 Progress OpenEdge Documentation (https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/dvref/message-statement.html) 中寻找消息对齐,但找不到。

如何以原生方式设置以父窗体为中心的消息框?


谢谢

【问题讨论】:

    标签: .net eclipse progress-4gl openedge


    【解决方案1】:

    简短的回答是你不能!

    长答案是您可能能够调用 win32 API 并以特定方式设置消息框。

    但是,快速浏览 Win32 API(以及 .NET)发现无法修改默认位置:

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx https://msdn.microsoft.com/en-us/library/system.windows.forms.messagebox.show(v=vs.110).aspx

    一种解决方法可能是使用定义为对话框的框架。

    这是一个非常快速而肮脏的代码,可以帮助您入门:

    DEFINE BUTTON   b1   LABEL "OK".
    DEFINE VARIABLE cMsg AS CHARACTER   NO-UNDO FORMAT "x(30)" .
    
    DEFINE FRAME fr1 
        cMsg NO-LABEL 
        b1
        cMsg AT COLUMN 1 ROW 1
        b1   AT COLUMN 5 ROW 3 
        WITH VIEW-AS DIALOG-BOX  SIZE 40 BY 5 
        .
    
    ENABLE b1 WITH FRAME fr1.
    
    ON "choose":U OF b1 
    DO:
        MESSAGE "You pressed OK!" VIEW-AS ALERT-BOX.
        APPLY "close" TO FRAME fr1.
    END.
    
    /* Set the location */
    FRAME fr1:ROW = 10.
    FRAME fr1:COL = 30.
    
    cMsg = "This is the message".
    
    DISPLAY cMsg WITH FRAME fr1.
    
    WAIT-FOR "close" OF FRAME fr1.
    

    【讨论】:

    • 我是这么想的,毕竟用原生方式是不可能的......实际上,从类文件(我之前忘了提到)调用 FRAME 是不可能的,除非它仍然是 .p 格式。
    【解决方案2】:

    您可以使用System.Windows.Forms.MessageBox

    这应该使您能够在所需位置显示消息。

    【讨论】:

    • 怎么样?该页面上似乎没有描述位置的选项。如果您知道可以做到,您应该描述如何做到!
    • @Jensd。通过将消息框作为父窗体的父级,默认行为是在中心显示消息。
    • 这也应该是内置进度消息框的默认行为。也许我在回答时阅读得不够好,以为它是关于以整个屏幕而不是父窗体为中心。
    • @Peter Strachan。我试过 System.Windows.Forms.MessageBox 但它以屏幕而不是父窗体为中心。
    • 道歉。我认为这就是养育消息框的全部意义所在。唯一的另一种方法是创建您自己的自定义消息框。您可以将其选项设置为中心父级。
    猜你喜欢
    • 2017-02-28
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多