.NET的MessageBox
如何确定其大小相对于显示它的屏幕的分辨率?
我正在为一个WPF应用程序编写一个稍微灵活一点的对话框窗口。窗口的布局是在一个网格中布局的:
+-----------------
| auto: Header // A header for the dialog.
+-----------------
| auto: Content // can be any FrameworkElement.
+-----------------
| auto: BottomPanel // With buttons <OK>, <Cancel>, <Delete>, etc.
+-----------------
字符串Content
单元格可以非常大。在我的一个用例中,用户想要从列表中删除 x 个元素。然后这些元素会在确认对话框中列出。如果有很多(比如50多个)元素,窗口会变得很大-对我来说太大了。
我想要的是一个函数,它以模仿微软自己的MessageBox
对话框的方式,从当前屏幕确定对话框窗口的MaxHeight
和MaxWidth
属性。
PS:我使用以下static
方法调用消息对话框:
// MessageDialog class
public static object Show(
Window owner,
FrameworkElement content,
string title,
string header,
params MessageDialogButton[] buttons
);
/* The MessageDialogButton class has the following properties:
* Text, ReturnValue, IsDefault, IsCancel. The class produces
* System.Windows.Controls.Button objects that when clicked
* return the value of their ReturnValue property--which is then
* returned by MessageDialog::Show(...)
*/
型
PPS:要确定显示对话框的屏幕,MessageDialog
窗口的Owner
所在的屏幕。作为后备,使用第一个(主)屏幕。
1条答案
按热度按时间ncgqoxb01#
你不会找到任何类似的文件,但是according to Raymond(过时的链接,这个link is more recent)在Windows Vista中,消息框算法通过选择以下最小值来确定消息框的宽度,从而产生适合工作区的框:
(我解释这意味着(例如)宽度将是工作区宽度的5/8,除非这导致对话框高于工作区的高度,在这种情况下,它将使用更宽的宽度)。
这至少应该给你给予一些指针,让你选择一个看起来不太合适的最大宽度。
据我所知,消息框没有最大高度,但我想类似的算法会很好地工作。
如果你的对话框真的很大,那么你可能想考虑让对话框可以调整大小/最大化。(我不喜欢那些显示列表太大但不允许你调整对话框大小的对话框)。