预检清单
- 我已阅读了此项目的 Contributing Guidelines。
- 我同意遵循此项目遵循的 Code of Conduct。
- 我在问题跟踪器中搜索了一个与我想提交的问题匹配的问题,但没有成功。
问题详情
- Electron 版本: 8.2.0
- 操作系统: Windows 10 (版本 1709)
- 最后已知的工作 Electron 版本: 不确定
预期行为
我希望通过 dialog.showMessageBox(...)
并传入一个窗口作为第一个参数来创建一个居中的对话框。
实际行为
对话框是居中的屏幕。
重现方法
运行下面的应用程序并观察到对话框没有居中于窗口。
const { app, BrowserWindow, dialog } = require('electron')
async function createWindow() {
const mainWindow = new BrowserWindow({ x: 1000, y: 1000 });
await mainWindow.loadURL("https://google.com");
dialog.showMessageBox(mainWindow, {
message: "message"
});
}
app.on('ready', createWindow)
目前还不清楚这是否是一个错误还是一个功能请求。
一个类似的问题 here 建议在使用 showMessageBox(win, ...)
时居中窗口是预期的行为:
如果你想在窗口中居中对话框,你应该使用 showMessageBox 并将其传递给它。
6条答案
按热度按时间vd8tlhqk1#
@zcbenz 我使用的是Electron v12,即使传递了父窗口,对话框仍然出现在屏幕中间而不是浏览器窗口的中心。平台是Windows。这仍然是一个问题吗?
wfauudbj2#
@m4heshd 我实际上更希望它位于窗口的中心,而不是屏幕上,而目前(在Electron 11上)似乎它并不位于窗口的中心。
tzcvj98z3#
@pushkin - 这很奇怪,因为我之前在v11上也是这样。之前误读了。我认为我们想实现与我在上面评论中提到的相同的事情。我也希望它能在窗口中居中。希望有这个选项。
似乎没有出现在窗口的中心
我有一个多显示器设置,可以清楚地看到对话框出现在屏幕中间的任何窗口内。所以是的。这绝对是有意为之的。
rqenqsqc4#
这似乎仍然是Electron 12的一个问题。将浏览器窗口作为参数传递给dialog.showMessageBox或dialog.showMessageBoxSync仍然不能将消息框放在浏览器窗口的中心,它总是只出现在屏幕的中心。
例如,如果你拖动程序的浏览器窗口到左侧或者向上移动,然后在程序中点击以显示一个消息框,消息框会出现在显示器屏幕的中心,而不是在程序窗口的中心。
zlwx9yxi5#
@balwantgill 它不被归类为"问题",因为它从未在一开始就被实施。但我真的希望这能作为Electron的增强功能,因为它现在的表现方式真的很奇怪。尤其是在大一点(分辨率更高)的屏幕上,用户可能会将应用程序捕捉到1/3或其他较小的屏幕区域。
7jmck4yq6#
我确认消息框在Windows上不是居中的,要使其居中,我们需要添加一些手动定位代码:
https://stackoverflow.com/questions/21961657/center-messagebox-window-to-my-own-window
我将此标记为增强功能,因为在Electron之前从未实现过。