重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
窗体enalbed的问题
创新互联-专业网站定制、快速模板网站建设、高性价比蒲县网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式蒲县网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖蒲县地区。费用合理售后完善,十载实体公司更值得信赖。
一个A窗体 点一项菜单弹出一个新窗体B
想让B窗体弹出后 A窗体的enabled就变为false
然后B窗体关闭以后 A窗体重新恢复enalbed = true
A窗体里面的菜单响应代码是
dim newframe as new frameB()
newframe.show()
me.enabled = false
此代码可以实现B窗体弹出后 A窗体不能选也不能动
问题是B窗体关闭以后如何恢复A窗体的enalbed的属性
代码应该怎么写 是写在A窗体的代码里面 还是B窗体的代码里面?
B窗体里面怎么修改 A窗体对象的属性?
2
关闭窗体问题
关闭一个窗体的时候,点右上角的X和代码me.colse() 是不是一回事?
要怎么关闭一个窗体才能完全释放内存?
我编的程序在退出后,总是在任务管理器里面还可以看到进程,怎么解决?
3
模块问题
我想把一些所有窗体都会用到的变量 和 函数 放到一个模块里面,比如说modu1.vb。
这些变量和函数是不是要定义成全局的? 怎么定义? 比方说要定义一个字符串要怎么写?
然后,其他的窗体要用到这些变量和函数的是侯,在他们各自窗体的代码里面是不是要加一句话?怎么加?加在什么地方?
更多 0 分享到:
相关主题推荐: 对象 管理 内存 as x
相关帖子推荐:
c# RemObjects.SDK.Serializer 拆箱搞不定,求助网络在线考试系统项目源码亲测sqlserver版本$("#XX")和$(XX)有什么样的区别??宏碁axc-105 2G内存却只有1.44G可用初学java 请帮忙看下多个tomcat启动问题 非端口占用以下执行的js代码中,代码执行完毕,变量得到释放了吗?请问android内存中的shared dirty memory,shared指的是什么啊
这样的话你就不要直接把子窗口show出来,先在父窗口创建一个子窗口对象的变量,通过实例化该变量达到创建子窗口的目的,然后在下次又要打开子窗口时也可以通过该变量关闭原有的子窗口
示例代码如下(假设Form1为父窗口,Form2为子窗口):
Form1的代码:
Public
Class
Form1
Dim
nform
As
Form2
=
Nothing
Private
Sub
Button1_Click(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
Button1.Click
If
nform
IsNot
Nothing
Then
nform.Close()
nform.Dispose()
End
If
nform
=
New
Form2
nform.Show()
Me.Hide()
End
Sub
End
Class
通过nform变量,你可以很轻易就处理掉原来已经打开但隐藏着的子窗口了
主窗体代码调用Me.close不就可以了吗?或者在任意代码处调用Application.Exit()。如果不起作用的话是因为你在窗体关闭的事件中调用了e.Handle=True
使用api
Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
好像不难吧?
我放进了Button1的Click事件里。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
On Error GoTo Errmessages '在做系统操作时加排错标签是个好习惯
Dim TargetName As String = "ibmdict" '存储进程名为文本型,注:进程名不加扩展名
Dim TargetKill() As Process = Process.GetProcessesByName(TargetName) '从进程名获取进程
Dim TargetPath As String '存储进程路径为文本型
If TargetKill.Length 1 Then '判断进程名的数量,如果同名进程数量在2个以上,用For循环关闭进程。
For i = 0 To TargetKill.Length - 1
TargetPath = TargetKill(i).MainModule.FileName
TargetKill(i).Kill()
Next
ElseIf TargetKill.Length = 0 Then '判断进程名的数量,没有发现进程直接弹窗。不需要的,可直接删掉该If子句
MsgBox("没有发现进程!")
Exit Sub
ElseIf TargetKill.Length = 1 Then '判断进程名的数量,如果只有一个,就不用For循环
TargetKill(0).Kill()
End If
MsgBox("已终止" TargetKill.Length "个进程") '弹窗提示已终止多少个进程
Errmessages: ‘定义排错标签
If Err.Description Nothing Then ’判断有无错误,如果有,则 ↓
MsgBox(Err.Description) '当出现错误时,弹窗提示
End If
End Sub
可根据需要自行修改,这个备注够完善了吧?不会的再Hi我。
软糖来回答罗:通过System.Diagnostics命名空间下的Process类来关闭程序的进程
Dim 进程集合 = Process.GetProcessesByName("进程名称")
For Each 进程 In 进程集合
进程.Kill()
'进程.Close() '或者使用关闭
Next
也可以先获取所有进程,再来判断这些进程的名称ProcessName
Dim 获取本地所有进程 = Process.GetProcesses()
For Each 进程 In 获取本地所有进程
If 进程.ProcessName = "explorer.exe" Then 进程.Kill()
Next