2008-10-23 21 views

回答

2

正如HTH所解釋的那樣,存在難以實現的方法。 這是一個簡單的類,將包裝對話框並將其居中父應用程序/窗體。

它採用了醜陋的方式,並將它們包裝成稍微簡單的東西。

雖然我還沒有實現這個或真的鑽研源代碼,這是一個很好的開始。 CodeProject CenterDialog

希望這會有所幫助。

+0

這也適用。 – jyoung 2008-10-23 18:06:33

0

我不太瞭解對話框或消息框,但是,您可以使用其StartPosition屬性查找新窗體。

System.Windows.Forms.Form f = new Form(); 
f.StartPosition = FormStartPosition.CenterParent; 
+1

麻煩的是,他沒有一個新的形式。 MessageBox使用靜態的Show()方法。 – itsmatt 2008-10-23 16:19:19

1

沒有挖掘到一些醜陋的P /調用代碼找到移動窗口顯示後,這根本不可能。如果你追求這一點,消息框會「跳躍」到新的位置,這通常比不居中。如果職位真的很重要,那麼創建自己的消息框或採用CodeProject中的一個更好。

HTH

0

您可以使用VB.NET Interaction.InputBox方法。如果您使用C#,只需添加對Microsoft.VisualBasic的引用,然後調用它。這個方法讓你指定X和Y座標。你必須解決一個有輸入框的對話框,但這可能更適合自己滾動。

我認爲這是您唯一的其他選擇 - 就像您說的,MessageBox等是sealed類,所以您必須備份到CommonDialog並從中派生自己的(可指定位置的)類。當然,它不應該是,但我可以理解,如果你不想寫/維護它。

0

你好得多創建自己的消息框

OT,但是這是我的眼中釘之一。 Office團隊這樣做了,他們的MessageBox缺少標準MessageBox的功能 - 可以使用Ctrl-C將MessageBox作爲文本複製到剪貼板(對bug報告等有用)。

0

Extended MessageBox .NET Library (assembly)

在其它有用的功能,包括兩個定位模式:通過絕對座標,通過對準到當前監視器的指定的邊框。

這不是MessageBox.Show的替代品,而是它的擴展。其他功能:消息字體和字體顏色選擇,可調整的背景顏色,用戶定義的按鈕標題和按鈕字體,捕捉來自用戶的文本輸入等等。

相關問題