2011-03-13 18 views
10

Potrzebuję zmienić lokalizację skrzynki wiadomości. Nie chcę, żeby był na środku strony.Jak zmienić lokalizację MessageBox?

MessageBox.Show("Hello"); 
+19

Zmieniłem twój tytuł z 'massagebox' (brzmi pięknie) na' messagebox'. – jgauffin

+2

@jgauffin, tag 'winforms' trochę niepoprawny, ponieważ' MessageBox' jest dostępny również w WPF. –

+0

możliwy duplikat [WinForm - jak mogę uczynić MessageBox wyśrodkowany na MainForm?] (Http://stackoverflow.com/questions/2576156/winforms-how-can-i-make-messagebox-appear-centered-on-mainform) –

Odpowiedz

2

Będziesz musiał utworzyć nowy formularz, który dziedziczy z formularza MessageBox. Jest to jedyny sposób uzyskania dostępu do właściwości pozycji.

11

Zazwyczaj nie można zmienić lokalizacji startowej standardowego okna komunikatu.

Rozwiązania zapytanie:

2

Istnieje sposób na zmianę lokalizacji, ale jest zbyt skomplikowany dla tak małego zadania.
Jeśli naprawdę potrzebujesz zmienić lokalizację, możesz ją wyświetlić, a następnie użyć GetForegroundWindow, aby uzyskać uchwyt okna, a następnie MoveWindow w wybranej lokalizacji.
Ale, jak już zmontowałem, jest to zbyt skomplikowane.
Wystarczy utworzyć własny formularz z etykietą na nim przycisk "OK". Ustaw przycisk jako domyślny przycisk okna, a następnie w Form1 wykonaj MyWndName.ShowDialog();

+0

tnank bardzo ci się podobało, a ty pracujesz – guy

+0

nie możesz być pewien, że 'GetForegroundWindow' da ci uchwyt utworzonego okna wiadomości. Możliwe, że w tej chwili nowa aplikacja przejdzie na pierwszy plan. –

2

To, co możesz zrobić, to utworzyć nowe okno, ustawić właściwość AllowsTransparency na true i ustawić Background jako Transparent. W tym oknie możesz umieścić TextBlock lub etykietę, a także dodać przyciski Tak/Nie. Ustaw położenie tego okna za pomocą Canvs.SetTop (Window, TopPosition) i Canvas.SetLeft (Window, LeftPosition). następnie wywołaj okno za pomocą metody Show() lub ShowDialog().

Powiązane problemy