Метод showMessageBox()
объекта dialog
асинхронно отображает диалоговое окно с сообщением и одной или несколькими кнопками. Формат метода:
const { dialog } = require('electron');
Promise<Объект> = dialog.showMessageBox([<Ссылка на окно>, ]<Опции>)
Если в первом параметре указана ссылка на родительское окно, то диалоговое окно будет модальным. Во втором параметре указывается объект со следующими опциями:
message
— текст сообщения;detail
— дополнительные сведения (отображается под текстом сообщения);title
— текст заголовка окна;buttons
— массив строк с названиями кнопок;defaultId
— индекс кнопки из массива buttons
, выбранной по умолчанию;cancelId
— индекс кнопки из массива buttons
, выбираемой при нажатии клавиши <Esc>;type
— тип диалогового окна в виде строки. Можно указать значения none
, info
, error
, warning
и question
;noLink
— если указано значение true
, то кнопки не будут преобразовываться в ссылки (значение по умолчанию: false
);icon
— задает значок;checkboxLabel
— если указано значение, то будет отображен флажок с указанным текстом;checkboxChecked
— если указано значение true
, то флажок будет установлен, а если false
— то сброшен;normalizeAccessKeys
— если указано значение true
, то символ &
перед буквой в названии кнопки, задающий клавишу быстрого доступа совместно с клавишей <Alt>, будет нормализован в зависимости от платформы (значение по умолчанию: false
).Метод showMessageBox()
возвращает объект Promise
, содержащий объект с двумя свойствами:
response
— индекс кнопки из массива buttons
, нажатой пользователем;checkboxChecked
— значение true
, если флажок установлен, и false
— если сброшен.Пример отображения окна внутри обработчика события:
ipcMain.on('event-show-dialog_info', async (e) => {
let result = await dialog.showMessageBox(win, {
message: 'Текст сообщения',
detail: 'Дополнительные сведения',
title: 'Заголовок окна',
buttons: ['OK', 'Отмена'],
defaultId: 0,
cancelId: 1,
type: 'info',
noLink: true,
checkboxLabel: 'checkboxLabel',
checkboxChecked: true,
normalizeAccessKeys: false
});
console.log(result); // { response: 1, checkboxChecked: true }
});
Можно также воспользоваться методом showMessageBoxSync()
объекта dialog
, который выполняет операцию синхронно, блокируя процесс. Формат метода:
const { dialog } = require('electron');
<Индекс кнопки> = dialog.showMessageBoxSync([<Ссылка на окно>, ]<Опции>)
Все параметры аналогичны одноименным параметрам метода showMessageBox()
. Метод showMessageBoxSync()
возвращает индекс кнопки из массива buttons
, нажатой пользователем. Пример отображения окна внутри обработчика события:
ipcMain.on('event-show-dialog_error', (e) => {
let result = dialog.showMessageBoxSync(win, {
message: 'Текст сообщения',
detail: 'Дополнительные сведения',
title: 'Заголовок окна',
buttons: ['OK', 'Отмена'],
defaultId: 0,
cancelId: 1,
type: 'error',
noLink: true,
normalizeAccessKeys: false
});
console.log(result); // 0 или 1
});