Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么MessageBox类显示的方法不包括几何体?_C#_Forms_Messagebox - Fatal编程技术网

C# 为什么MessageBox类显示的方法不包括几何体?

C# 为什么MessageBox类显示的方法不包括几何体?,c#,forms,messagebox,C#,Forms,Messagebox,在一些项目的迭代过程中使用C加快速度。很多时候,我搜索的概念都有不同于我预期的答案,但它最终教会了我更多关于Windows API及其结构的一些原因 我最近搜索了C控件的大小和消息框的位置,结果之一是一个2年前的线程: 它还引用了一个旧线程 好的,我得到的答案是不可能的,你应该为此创建自己的表单,然后提供一些示例和/或指导 在这种特殊情况下,我不同意,也看不到类设计器的意图 我搜索的另一个自然结果是MessageBox类的Show方法。这让我回到了我发现Show方法有19个重载的类。这些都与几何

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

我最近搜索了C控件的大小和消息框的位置,结果之一是一个2年前的线程:

它还引用了一个旧线程

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

在这种特殊情况下,我不同意,也看不到类设计器的意图

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

我的观点是,各种显示方法的特性允许程序员选择图标、标题文本、内容文本以及按钮。我看到它甚至与帮助导航器集成在一起。这对于小部件来说是一个难以置信的内置灵活性,但同时我不能控制小部件的大小和位置?这实际上是4个数字:X,Y,X-depth,Y-depth

我完全理解我可以创建一个新的表单,或者创建一个类来为我完成这项工作。事实上,这就是简化问题。当然我可以创建一个完整的表单。这意味着我必须管理它,处理它,并通过我自己的仪式为它提供方法。如果我使用MessageBox类作为我的基础创建一个类会怎么样?我不得不说,我必须稍微考虑一下,看看是否可以制作一个新的Show方法,该方法具有X/Y/X-depth/Y-depth的重载

IMHO,这些整体功能是非常自然的事情。弹出一个通知。标题框显示错误或警告,并在框中添加解释文本。能够在该框中显示“确定”和/或“取消”。因此,我想知道为什么设计师选择限制功能,而不考虑弹出窗口的大小和位置?因为默认的结果是,框被放在系统决定的任何地方,并且根据内容的不同,它是丑陋的/小的或大的

我最后想知道的是,主流观点是我应该制作自己的自定义表单,还是我真的成功地创建了一个继承MessageBox的类,并创建了一个支持几何体的自定义显示方法

也许更重要的是:我错了吗?该类是否已更新以满足我的需要,我只是不知道这一点?

否,MessageBox不允许指定大小,因为也不允许指定大小

不可能,您应该为此创建自己的表单,然后提供一些示例和/或指导


这是正确的,无论您是否同意这是一个好主意,都不会改变消息框不支持位置和大小的事实。它们应该是快速、简单、原始的东西,做得很少,但可能完成任务。除此之外,还需要一个表单。我想,虽然您可能需要调整大小,但其他人可能需要透明度,甚至可以更改按钮上的文本,您只能从选择中进行选择—这并不能让每个人都满意。此时,您几乎需要一个表单。

MessageBox不是密封的,因此您可以从中派生自己的类,但目的是什么?您仍然无法更改基类MessageBox的位置和大小。如果你有时间浪费,那就用你自己的自定义表单来充当MessageBox。看到这个讨论了吗