2014-11-20 105 views
0

通過C#來加速某些項目的迭代。很多時候,我所搜索的概念都有不同的答案,但我最終還是會更多地瞭解Windows API以及其結構的一些原因。爲什麼MessageBox類的顯示方法不包含幾何?

我做了近期的「消息框的C#控件的大小和位置」,其結果之一是一個2歲的主題搜索:

How to change the size of MessageBox in c#?

其中還引用了又一箇舊的線程。

好吧,我得到的答案「不可能,你應該爲此創建你自己的形式」,接下來是一些例子和/或指導。

在這種特殊情況下,我不同意並沒有看到班級設計師的意圖。

我搜索的另一個自然結果是MessageBox類的Show()方法。這讓我回到了課堂,我發現Show()方法有19個重載。沒有一個與幾何有關;我覺得這可能很簡單。

我的觀點是各種Show()方法的特性允許程序員選擇圖標,標題文本,內容文本以及按鈕。我發現它甚至與Help Navigator集成在一起。這是一個令人難以置信的小部件內置靈活性,但同時我無法控制該小部件的大小和位置?這實際上是4個數字:X,Y,X深度,Y深度。

我完全理解我可以創建一個新窗體,或者可能是class(?)來爲我做這個。其實,這是一個簡化問題。當然...我可以創建一個完整的表單。這意味着我必須對此進行管理並處理,並通過我自己的儀式爲其提供方法。如果我要使用MessageBox類創建一個類作爲我的基礎,該怎麼辦?我不得不說,我不得不徘徊一下,看看是否可以創建一個新的Show()方法,該方法具有X/Y/x-depth/y-depth的重載。

這些整體功能是非常自然的事情,恕我直言。彈出通知。標題爲顯示錯誤或警告的框,已在框中添加了解釋文本。有能力在該框中確定和/或取消。 因此,我想知道爲什麼設計師選擇限制功能,不允許彈出窗口的大小和位置?因爲默認結果是盒子在系統決定的任何地方被放入,並且它根據內容而變得很難/很小或很大。

我的最後一個疑問是,主流意見是否應該製作我自己的自定義表單,或者如果我實際上成功地創建了繼承MessageBox和製作支持幾何的自定義Show()方法的類。

也許甚至超越了那個:我誤會了嗎?這個課程是否已更新以滿足我的需求,我只是還不知道?

+0

MessageBox沒有密封,所以是的,你可以從它派生你自己的類,但是爲了什麼目的?您仍然無法更改基類MessageBox的位置和大小。如果您有時間浪費自己的自定義表單來充當MessageBox。看到這個討論https://social.msdn.microsoft.com/Forums/en-US/c4fcd52d-1e65-4be0-be9b-c96d5b0448dc/is-it-possible-to-override-the-messagebox-class?forum=Vsexpressvcs – Steve 2014-11-20 18:40:06

回答

0

不,MessageBox不允許指定大小,因爲underlying Win32 API也不允許。

不可能,您應該爲此創建自己的表格「,後面是一些示例和/或指導。

這是正確的,不管你是否同意這是一個好主意,不會改變消息框不支持位置和大小的事實。他們的意圖是快速,簡單,原始的東西,沒有多大作用,但可能會完成工作。除此之外,還需要一個表格。我想你可能想要調整大小,其他人可能想要透明度,或者甚至是改變按鈕上文本的能力(你只能從選擇中選擇) - 它不能讓每個人都高興。在這一點上,你幾乎需要一個表單。

相關問題