vb如何实现只有当前窗体被关闭才能操作其他窗体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb如何实现只有当前窗体被关闭才能操作其他窗体相关的知识,希望对你有一定的参考价值。

form1中点击一按钮弹出form2,如何做到只有关闭了form2,才能操作form1
1楼2楼的方法我知道,但是我不是这个意思!
我是要form2像msgbox弹出来那样的效果。3楼的答案只能让form2置顶,但是我仍然能点到form1去,而且能操作form1,只是form2 一直置顶而已。
有谁能解决这个问题 啊??

VB可通过Show方法将参数Staly设置为1以模式窗体显示当前窗体来实现当前窗体被关闭才能操作其他窗体。

Show 方法,用以显示 MDIForm 或 Form 对象。不支持命名参数。

说明

当 Show 在显示无模式窗体时,随后遇到的代码则要执行。当 Show 在显示模式窗体 (modal form)
时,则随后的代码直到该窗体被隐藏或卸载时才能执行。

当 Show
在显示模式窗体时,除了模式窗体中的对象之外不能进行输入(键盘或鼠标单击)。对其它窗体进行输入前程序必须隐藏或卸载模式窗体(通常是处于响应用户某些操作状态)。

参考技术A 那叫模式窗体 显示的时候使用
Private Sub Command1_Click()
Form2.Show 1
End Sub

很简单吧 你不关闭form2 你去点form1是没效果的
参考技术B 在点击完按钮弹出form2的同时,将form1.hide,在form2_unload 事件里再写入,form1.show
如果不想隐藏, 用form1.Visible =false /True 也行
参考技术C form2代码
Option Explicit

Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2

Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

然后这个是置顶,打开form2时调用:
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

关闭form2时,用这个取消置顶:
SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE

参考资料:http://www.vbssoft.com/post/14.html

参考技术D Private Sub Form_Load()
Me.Show
Form2.Show 1
End Sub
你要的应该就是这个东西本回答被提问者采纳

c#如何单击按钮显示另一个窗体

在vs2010中,我想单击form1中的一个button,弹出form2,form2是我设计的另一个页面
怎么操作?如果不能实现,有没有类似能弹出另一页面的方法?

工具/材料:以Microsoft Visual Studio 2010为例。

1、首先点击“Microsoft Visual Studio 2010”图标,打开软件。

2、然后在该界面中,右键点击右侧项目,选择“添加”选项。

3、之后在该界面中,点击“Windows窗体”选项,创建新窗体。

4、接着在该界面中,点击左侧“工具箱”里的“Button”选项,拖到界面里。

5、之后在该界面中,双击“button1”控件。

6、最后在该界面中,写入“Form5 fm = new Form5();fm.ShowDialog();”代码即可。

参考技术A private void button1_Click(object sender, EventArgs e)

Form2 f = new Form2();
f.Show(); 本回答被提问者采纳
参考技术B form frm2=new form2();
frm2.show();
我没开程序,大概是这个意思
参考技术C 代码:
protected void ButtonAddNewUser_Click(object sender, EventArgs e)

//在这里加入事件,然后去点击btnDel_Click的时候就会弹出
if (Page.IsPostBack)

btnDel.Attributes.Add("onclick", "return confirm('确定删除?')");


protected void btnDel_Click(object sender, EventArgs e)

//这个事件可以不存在,但是当按下这个按钮的时候就要弹出一个对话框窗口
//所以,我们可以把上面那段事件放于

//放于这个事件中
protected void Page_Load(object sender, EventArgs e)

//在这里加入事件,然后去点击btnDel_Click的时候就会弹出
if (Page.IsPostBack)

btnDel.Attributes.Add("onclick", "return confirm('确定删除?')");

以上是关于vb如何实现只有当前窗体被关闭才能操作其他窗体的主要内容,如果未能解决你的问题,请参考以下文章

在C#编程中如何实现把窗体的自带的关闭按钮隐藏但是最小化不隐藏

如何判断一个窗体的状态为show

C++ Builder中如何让窗体一直显示最前,焦点不失去,就是点不了别的窗体,切换不了窗体,总处在被激活状态

c#里面如何显示下一个窗体而关闭当前窗体?

c#如何单击按钮显示另一个窗体

vb6中如何实现类似MDI子窗体的窗体