为什么MessageBox类显示的方法不包含几何?

时间:2014-11-20 18:33:39

标签: c# forms messagebox

在一些项目的迭代中加快C#的速度。很多时候我搜索的概念都有不同于我预期的答案,但它最终教会了我更多关于Windows API及其结构的一些原因。

我最近搜索了#34; C#控件大小和消息框的位置"其中一个结果是一个2岁的帖子:

How to change the size of MessageBox in c#?

其中也引用了较旧的帖子。

好的,我得到答案"不可能,你应该为此创建自己的表格"然后是一些例子和/或指导。

在这种特殊情况下,我不同意,也没有看到班级设计师的意图。

我搜索的另一个自然结果是MessageBox类的Show()方法。这让我回到了类,我发现Show()方法有十九个重载。这些都与几何有关;我觉得这可能很简单。

我的观点是各种Show()方法的功能允许程序员选择图标,标题文本,内容文本以及按钮。我发现它甚至与帮助导航器集成在一起。这是一个令人难以置信的内置灵活性的小部件,但同时我无法控制该小部件的大小和位置?这实际上是4个数字:X,Y,x深度,y深度。

我完全明白我可以创建一个新表单,或者类(?)来为我做这个。实际上,这带有简化问题。当然......我可以创建一个完整的表单。这意味着我必须管理它并处理它,并通过我自己的仪式为它提供方法。如果我使用MessageBox类作为基础创建一个类怎么办?我不得不说,我不得不徘徊一下,看看我是否可以创建一个新的Show()方法,它具有X / Y / x-depth / y-depth的重载。

这些整体功能是非常自然的事情,恕我直言。弹出通知。标题框显示ERROR或WARNING,添加了包含在框内的说明文字。能够在该框中具有OK和/或CANCEL。 因此我想知道为什么设计师选择限制功能并且不允许弹出窗口的大小和位置?因为默认结果是框放在系统决定的任何地方,并且它的丑陋/小或大取决于内容。

我最后的疑问是,流行的观点是否应该是我自己的自定义表单,或者我是否真的成功地创建了一个继承MessageBox并创建支持几何的自定义Show()方法的类

甚至可能超出这个范围:我错了吗?这个课程是否已经更新以满足我的需求,我还不知道这个?

1 个答案:

答案 0 :(得分:0)

不,MessageBox不允许指定尺寸,因为underlying Win32 API也不允许。

  

不可能,您应该为此创建自己的表单"然后是一些例子和/或指导。

这是正确的,无论你是否同意它是一个好主意都不会改变消息框不支持位置和大小调整的事实。它们意味着快速,简单,原始的东西,虽然做得很少,但可能会完成工作。除此之外还需要表格。我想虽然你可能想要调整大小,但其他人可能想要透明度,甚至是改变按钮上文字的能力(你只能从选择中选择) - 它不能让每个人都开心。那时你几乎需要一个表格。