社区
VB
帖子详情
如何在vb的closing事件中加入判断,当选择否时不退出窗体
lly20000
2003-08-30 10:07:23
如何在vb的closing事件中加入判断,当选择否时不退出窗体
...全文
130
4
打赏
收藏
如何在vb的closing事件中加入判断,当选择否时不退出窗体
如何在vb的closing事件中加入判断,当选择否时不退出窗体
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
szch
2003-08-30
打赏
举报
回复
在closing事件中加入
if msgbox("退出否",MessageBoxButtons.YesNo)=DialogResult.No Then
e.Cancel = True '终止关闭窗体
End If
benlee
2003-08-30
打赏
举报
回复
e.Cancel = True
saucer
2003-08-30
打赏
举报
回复
Protected Overrides Sub OnClosing (ByVal e As CancelEventArgs)
Dim Buttons As MessageBoxButtons = MessageBoxButtons.YesNo
Dim Result As DialogResult
Result = MessageBox.Show(Me, "sure to close?", "hello", Buttons)
If Result = DialogResult.No Then
e.Cancel = True
End If
End Sub
jsfeiyu
2003-08-30
打赏
举报
回复
If MsgBox("是否确定要退出?", MsgBoxStyle.OKCancel, "提示!")=MsgBoxResult.Cancel Then
e.Cancel = True
Else
Application.Exit()
End If
VB
自动关机源码.rar
设置
窗体
的代码解释 Imports System.Diagnostics Public
Cl
ass 设置
窗体
Private shutTime As Stri
ng
'关机时间的字符串 Private IsToday As Boolean = True '
判断
是否是今天的变量 Private delay As Integer '延时多少秒放关机 Private lastTime As Integer '关机的倒计时 Private action As Stri
ng
'关机或重启或注销 Private shellText As Stri
ng
'执行的命令字符串 Private firstShow As Boolean = True Private SysTime As Boolean = False Private autoHide As Boolean = True '启动自动隐藏 Private TotalData As New System.Diagnostics.PerformanceCounter("Network Interface", "Bytes Total/sec", "MS TCP Loopback interface") Private proTime As New System.Diagnostics.PerformanceCounter("Processor", "% Processor Time", "_Total") '双击右下角的图标的响应
事件
Private Sub NotifyIcon1_MouseDouble
Cl
ick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDouble
Cl
ick If (Me.Visible = False) Then Me.Show() End If End Sub '重载
窗体
的关闭
事件
,使
窗体
隐藏 Private Sub Form1_
Cl
osi
ng
(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.
Cl
osi
ng
e.Cancel = True '取消
窗体
的关闭动作 delayTime.Value = delay '还原delayTime控件的值 StrToItems() '还原ListBox的值 Me.Hide() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ComboBox1.SelectedIndex = 2 '设置默认选项 "每天" ComboBox2.SelectedIndex = 4 '设置默认选项 "关机" Timer1.Start() readReg() '读取存放在注册表的信息 StrToItems() '把字符串的信息读取到ListBox delayTime.Value = delay '把延时时间读取到delayTime控件 DateTimePicker1.Value = Today End Sub Private Sub
退出
程序ToolStripMenuItem_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
退出
程序ToolStripMenuItem.
Cl
ick Me.Dispose() End Sub Private Sub 立即取消关机ToolStripMenuItem1_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 立即取消关机ToolStripMenuItem1.
Cl
ick Timer2.Stop() 取消
窗体
.
Cl
ose() Shell("shutdown -a") Timer1.Start() End Sub Private Sub 设置关机计划ToolStripMenuItem_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 设置关机计划ToolStripMenuItem.
Cl
ick If Me.Visible = False Then Me.Show() End If End Sub '点击确定按钮的
事件
处理 Private Sub Button4_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.
Cl
ick '
判断
是否要开机自动运行 If autoCheck.Checked Then 创建开机自动运行() Else 删除开机自动运行() End If If Me.HideCheck.Checked Then autoHide = True Else autoHide = False End If If Me.regCheck.Checked Then 禁止修改注册表() Else 取消禁止修改注册表() End If If Me.ManCheck.Checked Then 禁止使用任务管理器() Else 取消禁止使用任务管理器() End If If Me.SysTimeCheck.Checked Then SysTime = True Else SysTime = False End If '四舍五入delayTime控件的值 delay = Math.Round(delayTime.Value, MidpointRoundi
ng
.AwayFromZero) Me.Hide() ItemsToStr() '把listBox的信息保存到字符串
中
writeReg() '把字符串保存把注册表
中
End Sub '取消按钮
事件
Private Sub canelButton_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles canelButton.
Cl
ick StrToItems() '还原ListBox的值 delayTime.Value = delay '还原delayTime控件的值 Me.Hide() End Sub '点击添加按钮 Private Sub addButton_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addButton.
Cl
ick Dim tempStr As Stri
ng
= "" If ComboBox1.Items.Item(ComboBox1.SelectedIndex) = "指定日期" Then tempStr = DateTimePicker1.Value.ToShortDateStri
ng
Else tempStr = ComboBox1.SelectedItem End If tempStr &= "," & CStr(Math.Round(hourNum.Value, MidpointRoundi
ng
.AwayFromZero)) & ":" & CStr(Math.Round(minNum.Value, MidpointRoundi
ng
.AwayFromZero)) & ":" & CStr(Math.Round(secNum.Value, MidpointRoundi
ng
.AwayFromZero)) & "," Select Case ComboBox2.SelectedItem Case "打开网址" tempStr &= "打开网址" & "[" & TextBox1.Text.Replace(";", ";").Replace(":", ":") & "]" Case "提醒信息" tempStr &= "提醒信息" & "[" & TextBox1.Text.Replace(";", ";").Replace(":", ":") & "]" Case "打开文件" tempStr &= "打开文件" & "[" & TextBox1.Text.Replace(";", ";").Replace(":", ":") & "]" Case Else tempStr &= ComboBox2.SelectedItem End Select ListBox1.Items.Add(tempStr) End Sub '点击清除按钮 Private Sub
cl
earButton_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
cl
earButton.
Cl
ick ListBox1.Items.
Cl
ear() End Sub '把ListBox的值保存到字符串ShutTime Private Sub ItemsToStr() Dim i As Integer shutTime = "" For i = 0 To ListBox1.Items.Count - 1 '把ListBox
中
的各项连接到shutTime shutTime &= ListBox1.Items.Item(i) & ";" Next If shutTime "" Then '去除最后一个 ";" shutTime = Mid(shutTime, 1, shutTime.Le
ng
th - 1) End If End Sub '把字符串ShutTime的值还原到ListBox Private Sub StrToItems() If shutTime "" Then '如果shutTime有保存信息 Dim temp() As Stri
ng
= shutTime.Split(";") 'temp字符串数组存放shutTime以";"分隔的各个字符子串 Dim t As Stri
ng
't存放temp字符串数组的一项 ListBox1.Items.
Cl
ear() For Each t In temp If Not (Mid(t, 1, 2) = "今天" And Not IsToday) Then '如果今天还没过了 ListBox1.Items.Add(t) End If Next End If End Sub '读取注册表保存的信息 Private Sub readReg() Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey Try key = Microsoft.Win32.Registry.LocalMachine subkey = key.OpenSubKey("SOFTWARE\AutoShutdown") shutTime = subkey.GetValue("time") delay = CInt(subkey.GetValue("delayTime")) autoHide = subkey.GetValue("autoHide") If (CStr(Today()) subkey.GetValue("day")) Then IsToday = False End If Catch ex As Exception shutTime = "" IsToday = True End Try End Sub Private Sub 禁止修改注册表() Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser subkey = key.CreateSubKey("software\microsoft\windows\currentversion\policies\system") subkey.SetValue("disableregistrytools", 1) End Sub Private Sub 取消禁止修改注册表() Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser subkey = key.CreateSubKey("software\microsoft\windows\currentversion\policies\system") subkey.SetValue("disableregistrytools", 0) End Sub Private Sub 禁止使用任务管理器() Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser subkey = key.CreateSubKey("software\microsoft\windows\currentversion\policies\system") subkey.SetValue("DisableTaskMgr", 1) End Sub Private Sub 取消禁止使用任务管理器() Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser subkey = key.CreateSubKey("software\microsoft\windows\currentversion\policies\system") subkey.SetValue("DisableTaskMgr", 0) End Sub '将需要保存的信息写入注册表 Private Sub writeReg() Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine subkey = key.CreateSubKey("SOFTWARE\AutoShutdown") subkey.SetValue("time", shutTime) subkey.SetValue("day", CStr(Today())) subkey.SetValue("delayTime", CStr(delay)) subkey.SetValue("autoHide", autoHide) End Sub '点击删除按钮 Private Sub delButton_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles delButton.
Cl
ick Dim delIndex As Integer = ListBox1.SelectedIndex If delIndex -1 Then ListBox1.Items.RemoveAt(delIndex) End If End Sub '最小化
窗体
,这里指隐藏
窗体
Private Sub 最小化ToolStripMenuItem_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 最小化ToolStripMenuItem.
Cl
ick If Me.Visible = True Then StrToItems() delayTime.Value = delay Me.Hide() End If End Sub Private Sub 创建开机自动运行() Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine subkey = key.CreateSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run") subkey.SetValue("定时自动关机", Application.ExecutablePath) End Sub Private Sub 删除开机自动运行() Dim key As Microsoft.Win32.RegistryKey, subkey As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine subkey = key.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True) subkey.DeleteValue("定时自动关机") End Sub '关闭显示器 Public De
cl
are Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer Public Const WM_SYSCOMMAND = &H112 Public Const SC_MONITORPOWER = &HF170 '关闭显示器 Private De
cl
are Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Lo
ng
, ByVal lpOperation As Stri
ng
, ByVal lpFile As Stri
ng
, ByVal lpParameters As Stri
ng
, ByVal lpDirectory As Stri
ng
, ByVal nShowCmd As Lo
ng
) As Lo
ng
'Timer1的Tick
事件
,来监视现在的时间是否应该关机或别的了 Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Static nowTime As Date = Now updataMsg() If SysTime Then If (Now nowTime) Then Today = nowTime TimeOfDay = nowTime End If End If nowTime = nowTime.AddSeconds(1) If (shutTime "") Then Dim temp1() As Stri
ng
= shutTime.Split(";") 'temp1字符串数组存放shutTime以";"分隔的各个字符子串 Dim temp2() As Stri
ng
, i As Integer 'temp2字符串数组存放temp1某项的字符串以","或":"分隔的字符子串 Dim TimeOut As Boolean = False 'TimeOut存放是
否时
间到了 For i = 0 To temp1.Le
ng
th - 1 temp2 = temp1(i).Split(New Char() {",", ":"}) If IsTimeOut(temp2) Then '
判断
时间是否到了 TimeOut = True action = temp2(4) '是"关机","注销","重启" End If Next If TimeOut Then '如果时间到 Select Case Mid(action, 1, 4) '根据action肯定命令字符串 Case "关闭计算" shellText = "shutdown -s -f -t 0" Case "重启计算" shellText = "shutdown -r -f -t 0" Case "注销用户" shellText = "shutdown -l -f -t 0" Case "关闭显示" SendMessage(Me.Handle.ToInt32(), WM_SYSCOMMAND, SC_MONITORPOWER, 1) Exit Sub Case "锁定计算" shellText = "rundll32.exe user32.dll, LockWorkStation" Case "打开文件" System.Diagnostics.Process.Start(Mid(action, 6, action.Le
ng
th - 6).Replace(":", ":")) Exit Sub Case "提醒信息" MsgBox(Mid(action, 6, action.Le
ng
th - 6), , "提醒信息") Exit Sub Case "打开网址" System.Diagnostics.Process.Start(Mid(action, 6, action.Le
ng
th - 6).Replace(":", ":")) Exit Sub End Select lastTime = delay '倒计时等于延时 Timer2.Start() '倒计时开始 取消
窗体
.Show() '倒计时窗口打开 Timer1.Stop() End If End If End Sub '
判断
时间是否到了 Private Function IsTimeOut(ByRef t() As Stri
ng
) As Boolean '如果时分秒都相等 If t(1) = CStr(Hour(Now())) And t(2) = CStr(Minute(Now()) And t(3) = Second(Now)) Then Select Case t(0) Case "每天" Return True Case "今天" Return True Case "每周二" If Weekday(Now) = FirstDayOfWeek.Tuesday Then Return True End If Case "每周六" If Weekday(Now) = FirstDayOfWeek.Saturday Then Return True End If Case "每周日" If Weekday(Now) = FirstDayOfWeek.Sunday Then Return True End If Case "每周三" If Weekday(Now) = FirstDayOfWeek.Wednesday Then Return True End If Case "每周四" If Weekday(Now) = FirstDayOfWeek.Thursday Then Return True End If Case "每周五" If Weekday(Now) = FirstDayOfWeek.Friday Then Return True End If Case "每周一" If Weekday(Now) = FirstDayOfWeek.Monday Then Return True End If Case "每周一至周五" If Weekday(Now) > FirstDayOfWeek.Sunday And Weekday(Now) < FirstDayOfWeek.Saturday Then Return True End If Case Else If (t(0) = Today.ToShortDateStri
ng
) Then Return True End If End Select End If Return False End Function '刷新Msg控件 Private Sub updataMsg() Dim xi
ng
qi As Stri
ng
= "" Select Case Weekday(Now) Case 1 xi
ng
qi = "星期天" Case 2 xi
ng
qi = "星期一" Case 3 xi
ng
qi = "星期二" Case 4 xi
ng
qi = "星期三" Case 5 xi
ng
qi = "星期四" Case 6 xi
ng
qi = "星期五" Case 7 xi
ng
qi = "星期六" End Select msg.Text = "当前时间" & Now().ToLo
ng
DateStri
ng
& " " & Now().ToLo
ng
TimeStri
ng
& " " & xi
ng
qi & " CPU使用" & Format(proTime.NextValue, "#0") & "% 网速" & Format(TotalData.NextValue / 1024, "########0.00") & "KB/S" Me.NotifyIcon1.Text = msg.Text End Sub '倒计时处理
事件
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick If lastTime = 0 Then '如果时间到 Shell(shellText, AppWinStyle.Hide) 取消
窗体
.Label1.Text = "正在" & action Else 取消
窗体
.Label1.Text = "离" & action & "还有" & lastTime & "秒" '显示倒计时 lastTime -= 1 End If End Sub Private Sub 设置
窗体
_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown If autoHide Then Me.Hide() End If End Sub Private Sub ComboBox2_SelectedIndexCha
ng
ed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexCha
ng
ed Select Case ComboBox2.SelectedItem Case "打开网址" Button1.Visible = False TextBox1.Width = 299 TextBox1.Visible = True Case "提醒信息" Button1.Visible = False TextBox1.Width = 299 TextBox1.Visible = True Case "打开文件" Button1.Visible = True TextBox1.Width = 209 TextBox1.Visible = True Case Else Button1.Visible = False TextBox1.Visible = False End Select End Sub Private Sub ComboBox1_SelectedIndexCha
ng
ed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexCha
ng
ed If ComboBox1.SelectedItem = "指定日期" Then DateTimePicker1.Visible = True Else DateTimePicker1.Visible = False End If End Sub Private Sub Button1_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.
Cl
ick If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then TextBox1.Text = OpenFileDialog1.FileName End If End Sub Private Sub 立即关机ToolStripMenuItem_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 立即关机ToolStripMenuItem.
Cl
ick Shell("shutdown -s -f -t 0") End Sub Private Sub 立即重启ToolStripMenuItem_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 立即重启ToolStripMenuItem.
Cl
ick Shell("shutdown -r -f -t 0") End Sub Private Sub 立即注销ToolStripMenuItem_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 立即注销ToolStripMenuItem.
Cl
ick Shell("shutdown -l -f -t 0") End Sub Private Sub 立即锁定计算机ToolStripMenuItem_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 立即锁定计算机ToolStripMenuItem.
Cl
ick Shell("rundll32.exe user32.dll, LockWorkStation") End Sub Private Sub 立即关闭显示器ToolStripMenuItem_
Cl
ick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 立即关闭显示器ToolStripMenuItem.
Cl
ick SendMessage(Me.Handle.ToInt32(), WM_SYSCOMMAND, SC_MONITORPOWER, 1) End Sub Private Sub LinkLabel1_Link
Cl
icked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLink
Cl
ickedEventArgs) Handles LinkLabel1.Link
Cl
icked System.Diagnostics.Process.Start("http://lywa
ng
.5d6d.com/space-uid-1.html") End Sub End
Cl
ass
VB
.NET是如何关闭
窗体
.
1、在
VB
.NET
中
取消
窗体
的关闭
事件
;2、如何取消
窗体
上关闭按钮功能;3、
窗体
终止
事件
的过程,见如下说明 如果只是关闭
窗体
,请调用该
窗体
的
Cl
ose命令。 如果你将应用程序项目的启动
窗体
设顶成某个
窗体
,则调用该启动
窗体
的
Cl
ose命令时,也就会结束该应用程序。 一般来说,要在任何时候结束应用程序,请调用Application.Exit命令。它会停止所有运行
中
的线程,并关闭应用程序
窗体
。它并不一定会强制结束应用程序。 一般是在线程内调用,并强制Application.Run返回。若只是要结束当前线程,则调用
vb
.net 教程 3-2
窗体
编程之
窗体
3
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 为
窗体
/控件添加
事件
的方法: 双击
窗体
/控件,就会转入默认的
事件
,例如
窗体
是Load
事件
,按钮是
Cl
ick
事件
,文本框是TextCha
ng
ed
事件
…… 要修改引发的
事件
可以采用以下方法: 方法一: 代码页面,鼠标点击下图
中
红色方框内的下拉框 可以看到里面除了
窗体
外还有两个控件,一个Button,一个CheckBox:
选择
某个控件或者(Form1
事件
),比如选
中
(form1
事件
),就可以在
WinForm
窗体
关闭程序
退出
实现
WinForm程序
退出
方法技巧 1.this.
Cl
ose(); 只是关闭当前窗口,若不是主
窗体
的话,是无法
退出
程序的,另外若有托管线程(非主线程),也无法干净地
退出
; 2.Application.Exit(); 强制所有消息
中
止,
退出
所有的
窗体
,但是若有托管线程(非主线程),也无法干净地
退出
; 3.Application.ExitThread(); 强制
中
止调用线程上的所有消息,同样面临其它线程无法正确
退出
的问题; 4.System.Environment.Exit(0); 这是最彻底的
退出
方式,不管什么线
VB
.NET是如何关闭
窗体
1、在
VB
.NET
中
取消
窗体
的关闭
事件
;2、如何取消
窗体
上关闭按钮功能;3、
窗体
终止
事件
的过程,见如下说明 如果只是关闭
窗体
,请调用该
窗体
的
Cl
ose命令。 如果你将应用程序项目的启动
窗体
设顶成某个
窗体
,则调用该启动
窗体
的
Cl
ose命令时,也就会结束该应用程序。 一般来说,要在任何时候结束应用程序,请调用Application.Exit命令。它会停止所有运行
中
的线程,并关
VB
16,555
社区成员
110,528
社区内容
发帖
与我相关
我的任务
VB
VB技术相关讨论,主要为经典vb,即VB6.0
复制链接
扫一扫
分享
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章