我想獲取父窗體的中心,而不是屏幕行爲的中心。 傳遞父窗體似乎只能控制窗口的所有權。 這些類是封閉的,所以我不明白我怎麼能做任何WinProc技巧。 重寫類不是一個吸引人的選項。 有沒有其他想法?我可以定位.net的(表單)消息框或常用對話框嗎?
回答
正如HTH所解釋的那樣,存在難以實現的方法。 這是一個簡單的類,將包裝對話框並將其居中父應用程序/窗體。
它採用了醜陋的方式,並將它們包裝成稍微簡單的東西。
雖然我還沒有實現這個或真的鑽研源代碼,這是一個很好的開始。 CodeProject CenterDialog
希望這會有所幫助。
我不太瞭解對話框或消息框,但是,您可以使用其StartPosition屬性查找新窗體。
System.Windows.Forms.Form f = new Form();
f.StartPosition = FormStartPosition.CenterParent;
麻煩的是,他沒有一個新的形式。 MessageBox使用靜態的Show()方法。 – itsmatt 2008-10-23 16:19:19
沒有挖掘到一些醜陋的P /調用代碼找到和移動窗口顯示後,這根本不可能。如果你追求這一點,消息框會「跳躍」到新的位置,這通常比不居中。如果職位真的很重要,那麼創建自己的消息框或採用CodeProject中的一個更好。
HTH
您可以使用VB.NET Interaction.InputBox
方法。如果您使用C#,只需添加對Microsoft.VisualBasic的引用,然後調用它。這個方法讓你指定X和Y座標。你必須解決一個有輸入框的對話框,但這可能更適合自己滾動。
我認爲這是您唯一的其他選擇 - 就像您說的,MessageBox等是sealed
類,所以您必須備份到CommonDialog並從中派生自己的(可指定位置的)類。當然,它不應該是硬,但我可以理解,如果你不想寫/維護它。
你好得多創建自己的消息框
OT,但是這是我的眼中釘之一。 Office團隊這樣做了,他們的MessageBox缺少標準MessageBox的功能 - 可以使用Ctrl-C將MessageBox作爲文本複製到剪貼板(對bug報告等有用)。
Extended MessageBox .NET Library (assembly)
在其它有用的功能,包括兩個定位模式:通過絕對座標,通過對準到當前監視器的指定的邊框。
這不是MessageBox.Show的替代品,而是它的擴展。其他功能:消息字體和字體顏色選擇,可調整的背景顏色,用戶定義的按鈕標題和按鈕字體,捕捉來自用戶的文本輸入等等。
- 1. 在多屏幕上協調消息框或對話框位置
- 2. 我們可以在對話框中打開對話框嗎?
- 3. 我可以在java中使用帶有消息對話框的IF語句嗎?
- 4. 我可以在對話框程序中使用HANDLE_MSG消息破解程序嗎?
- 5. 如何使用ASP .NET創建對話框消息框?
- 6. 顯示簡單的消息對話框
- 7. SWT表單或對話框
- 8. 帶有SDL的對話框/消息框?
- 9. 當其他對話框打開時,我可以調用對話框嗎?
- 10. 消息/確認對話框
- 11. 消息對話框錯誤
- 12. 定位對話框
- 13. 對話框定位
- 14. C#消息框對話框結果
- 15. Populate Facebook Feed對話框消息框
- 16. JQuery對話框可以打開另一個JQuery對話框嗎?
- 17. 我可以在對話框中添加選項菜單嗎?
- 18. 處理異常並獲取消息對話框以顯示
- 19. 我可以使用.Net CF未處理的異常對話框來顯示和捕獲到的異常嗎?
- 20. 使用對話框或創建表單?
- 21. 我可以通過模態或無模式對話框來顯示信息和聯繫表單嗎?
- 22. 初學者最簡單的對話框/消息框?
- 23. 我可以使用WPF的UserControl上的對話框和DialogResult嗎?
- 24. 如何在WiX卸載時顯示對話框或消息框?
- 25. 我可以使用自定義列表出現在警報對話框中嗎?
- 26. 我如何測試SWT的消息對話框/框(帶SWTBot)?
- 27. 無法定位我的jQuery對話框
- 28. 返回對話框自定義消息框中的結果
- 29. 我可以禁用y對話框的打印頁面嗎?
- 30. 我可以關閉列表中單擊的提示對話框嗎?
這也適用。 – jyoung 2008-10-23 18:06:33