Как можно было бы пойти о создании Немодального MessageBox? Я должен просто создать свой собственный класс Windows Form и использование это? Если так, есть ли простой способ добавить значок предупреждения (вместо того, чтобы вставить мое собственное изображение одного) и изменить размер на основе текстового объема?
Вам нужно будет создать форму и использовать Show ()
, чтобы отобразить ее без режима. MessageBox.Show (...)
вел себя модально, как показано в примере от ghiboz; «Описание сообщения» отображается до тех пор, пока пользователь не нажмет кнопку.
С помощью MessageBox.Show (...)
вы получаете результат, как только окно сообщения закрывается; с немодальным окном сообщения ваш код должен иметь механизм, такой как событие, чтобы реагировать, когда пользователь в конечном итоге выбирает что-то в вашем окне сообщения.
Примечание: это создаст модальное диалоговое окно, которое задает не вопрос
вот пример кода
if (MessageBox.Show("Description of the message", "Caption text", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.Yes)
{
// Do some stuff if yes pressed
}
else
{
// no pressed
}
Вы можете использовать стандартный значок системного предупреждения, используя SystemIcons
Вы должны либо использовать форму, либо вызвать showDialog ()
А для значков использовать
MessageBoxIcon.Warning
// никакой Commnet
object sync = new object();
ManualResetEvent Wait = new ManualResetEvent();
//you should create a place holder named MessageData for Message Data.
List<MessageData> Messages = new List<MessageData>();
internal void ShowMessage(string Test, string Title, ....)
{
MessageData MSG = new MessageData(Test, Title);
Wait.Set();
lock(sync) Messages.Add(MSG);
}
// another thread should run here.
void Private_Show()
{
while(true)
{
while(Messsages.Count != 0)
{
MessageData md;
lock(sync)
{
md = List[0];
List.RemoveAt(0);
}
MessageBox.Show(md.Text, md.Title, md....);
}
Wait.WaitOne();
}
}
не требует больше потоков и больше кода (у меня нет времени писать) для параллельных ящиков сообщений .
Если не писать код, вы можете создать небольшую форму, которая в конструкторе выполняет следующие действия
SystemIcons.Application
SystemIcons.Asterix
SystemIcons.Error
SystemIcons.Exclamation
SystemIcons.Hand
SystemIcons.Information
SystemIcons.Question
SystemIcons.Shield
SystemIcons.Warning
SystemIcons.WinLogo
Если вы действительно хотите, вы можете прослушать событие, которое запускается при нажатии кнопки OK.