Мне нужно изменить местоположение окна сообщения. Я не хочу, чтобы он был в центре страницы.
MessageBox.Show("Hello");
Мне нужно изменить местоположение окна сообщения. Я не хочу, чтобы он был в центре страницы.
MessageBox.Show("Hello");
Обычно вы не можете изменить место запуска стандартного окна сообщений.
Решения для вашего вопроса:
Вам нужно будет создать новую форму, которая наследуется от формы MessageBox. Это единственный способ получить доступ к свойствам позиции.
Есть способ изменить местоположение, но он слишком сложен для такой маленькой задачи.
Если вам действительно нужно изменить его местоположение, вы можете отобразить его, затем использовать GetForegroundWindow
, чтобы получить дескриптор окна, а затем MoveWindow
в нужное место.
Но, как я уже говорил, это слишком сложно.
Просто создайте собственную форму с меткой и кнопкой "ОК". Установите кнопку в качестве кнопки окна по умолчанию, а затем в Form1 выполните MyWndName.ShowDialog();
GetForegroundWindow
даст вам дескриптор созданного окна сообщения. Возможно, в этот момент другое приложение перейдет на передний план.
- person Kyrylo M; 13.03.2011
Что вы можете сделать, так это создать новое окно, установить для свойства AllowsTransparency значение true и установить для фона значение Transparent. В этом окне вы можете поместить TextBlock или метку, а также добавить кнопки «Да/Нет». Установите расположение этого окна, используя Canvs.SetTop(Window,TopPosition) и Canvas.SetLeft(Window,LeftPosition). затем вызовите окно методом Show() или ShowDialog().
Поскольку я уже использую AutoIt для нескольких других задач в своем проекте, я просто создаю еще один поток для перемещения окна сообщения.
using System.Threading;
using AutoIt;
//Namespace, class, function stuffs
//New thread BEFORE create message box - safety measure
Thread autoItThread = new Thread(delegate ()
{
AutoItX.WinWait("New Message box");
AutoItX.WinMove("New Message box", "This box will be moved", 400, 300);
});
autoItThread.Start();
MessageBox.Show("This box will be moved", "New Message box");
Пожалуйста, обрати внимание
400,300
является абсолютной. 0,0
будет верхний левый угол.
massagebox
(звучит прекрасно) наmessagebox
. - person jgauffin   schedule 13.03.2011winforms
немного неверен, потому чтоMessageBox
доступен и в WPF. - person Kyrylo M   schedule 13.03.2011