【发布时间】:2010-06-17 14:13:48
【问题描述】:
如何显示带有两个按钮的消息框(例如:"on"、"off")?
【问题讨论】:
标签: vbscript
如何显示带有两个按钮的消息框(例如:"on"、"off")?
【问题讨论】:
标签: vbscript
你可能想做这样的事情:
result = MsgBox ("Yes or No?", vbYesNo, "Yes No Example")
Select Case result
Case vbYes
MsgBox("You chose Yes")
Case vbNo
MsgBox("You chose No")
End Select
添加图标:
result = MsgBox ("Yes or No?", vbYesNo + vbQuestion, "Yes No Example")
其他图标选项:
vbCritical or vbExclamation
【讨论】:
VBScript Messagebox 对于您可以应用于按钮的标签非常有限,您的选择非常有限:
因此,如果您想要“开”/“关”,您将不得不构建自己的表单
更好的是,为什么不改写框中的提示,以便上述选项之一有效。
例如:
Do you want the light on?
[Yes] [No]
看在上帝的份上不要做这些 UI 怪物之一!
Switch setting? (Click "yes" for ON and "No" for Off)
[Yes] [No]
【讨论】:
请记住 - 如果您将按钮设置为 vbOkOnly - 它会始终返回 1。
因此,您无法确定用户是单击了关闭还是单击了确定按钮。您只需添加一个vbOk 选项。
【讨论】:
【讨论】:
可以,我在网上其他地方找到的...这不是我的工作! :)
Option Explicit
' Import
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function SetDlgItemText Lib "user32" _
Alias "SetDlgItemTextA" _
(ByVal hDlg As Long, _
ByVal nIDDlgItem As Long, _
ByVal lpString As String) As Long
Private Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
' Handle to the Hook procedure
Private hHook As Long
' Hook type
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
' Constants
Public Const IDOK = 1
Public Const IDCANCEL = 2
Public Const IDABORT = 3
Public Const IDRETRY = 4
Public Const IDIGNORE = 5
Public Const IDYES = 6
Public Const IDNO = 7
Public Sub MsgBoxSmile()
' Set Hook
hHook = SetWindowsHookEx(WH_CBT, _
AddressOf MsgBoxHookProc, _
0, _
GetCurrentThreadId)
' Run MessageBox
MsgBox "Smiling Message Box", vbYesNo, "Message Box Hooking"
End Sub
Private Function MsgBoxHookProc(ByVal lMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
If lMsg = HCBT_ACTIVATE Then
SetDlgItemText wParam, IDYES, "Yes :-)"
SetDlgItemText wParam, IDNO, "No :-("
' Release the Hook
UnhookWindowsHookEx hHook
End If
MsgBoxHookProc = False
End Function
【讨论】:
msgbox ("Message goes here",0+16,"Title goes here")
如果用户应该做出决定,则可以像这样添加变量。
variable=msgbox ("Message goes here",0+16,"Title goes here")
中间的数字会改变消息框的外观。 这是列表
0 - 仅确定按钮
1 - 确定并取消
2 - 中止、重试和忽略
3 - 是 否 并取消
4 - 是和否
5 - 重试并取消
更改符号(正确的数字)
16 - 重要消息图标
32 - 警告图标
48 - 警告信息
64 - 信息消息
默认按钮
0 = vbDefaultButton1 - 第一个按钮是默认的
256 = vbDefaultButton2 - 第二个按钮是默认的
512 = vbDefaultButton3 - 第三个按钮是默认的
768 = vbDefaultButton4 - 第四个按钮是默认的
系统模式
4096 = 系统模式,警报将在所有应用程序之上
注意:还有一些额外的数字。您只需要将它们添加到已经存在的数字中,例如
msgbox("Hello World", 0+16+0+4096)
来自https://www.instructables.com/id/The-Ultimate-VBS-Tutorial/
【讨论】:
我做到了
msgbox "TEXT HERE",3,"TITLE HERE"
If Yes=true then
(result)
else
msgbox "Closing..."
【讨论】:
可以在 2021 年制作像 Msgboxes 一样简单的自定义对话框!请注意,这是针对 VB,而不是 VB 脚本。
首先使用对话框模板制作一个新表单。它已经包含两个框,您可以更改其中的名称/文本:
然后回到你的主代码中,把这个,“Dialog1”是你的新对话框的名称。这允许您将此表单视为一个 msgbox,只需一行代码:
Dim dialogInstance As New Dialog1
Dim result As dialogResult = dialogInstance.ShowDialog()
变量“结果”的行为类似于传统的确定/取消消息框,与上述选项完全相同,但会在按钮上显示您的自定义文本。从这里您可以将自定义图片添加到您的 msgbox 等等!
【讨论】: