VB里如果想在主窗体form1中通过一个按钮 来实现调用另一个窗体的操作 应该怎么操作呢?

饭团和蓝花 2006-09-20 12:50:41
比如另一个窗体是含有一个web浏览器的form2 我希望在form1中点击按钮后form2会内嵌在主窗体中。。。
我用form2.show是另外弹出了form2这个窗体,而不是 将form2作为form1的一部分。

我是个新手,可能有些问题问的用词不太恰当,希望大家帮忙看看。谢谢啊
...全文
285 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zq972 2006-09-20
  • 打赏
  • 举报
回复
form1用mdi,form2为子窗体
happy_sea 2006-09-20
  • 打赏
  • 举报
回复
用MDI窗体
清晨曦月 2006-09-20
  • 打赏
  • 举报
回复
如果你只是想镶嵌的话,很简单。
在窗体FROM1的代码中加入:
PRIVATE Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
在你的按钮里加入:
SetParent form2.hwnd,form1.hwnd
就可以把form2放到form1里面了。不过建议在这之前,先设置form2.left=0 :form2.top=0
并在FORM1里想显示FORM2的位置添加一个FRAME控件,名称为FRAME1,然后调用以下代码
SetParent form2.hwnd,frame1.hwnd
happy_sea 2006-09-20
  • 打赏
  • 举报
回复
那不是用多个窗体来实现的,而是用的自定义控件(当然也可能不这么简单)。用VB的sstab控件可以实现类似的效果,不过界面不很美观。
饭团和蓝花 2006-09-20
  • 打赏
  • 举报
回复
哦 谢谢大家 我的意思是想做成象腾讯TM界面那样的 通过点不同的按钮在同一个窗体中的同一个位置 显示不同的模块 这样我希望把各个模块做成单独的窗体 然后在主窗体中调用 这样可以吗?不知道TM是怎么实现的?
Moon 2006-09-20
  • 打赏
  • 举报
回复
子窗体
happy_sea 2006-09-20
  • 打赏
  • 举报
回复
用MDI窗体似乎也无法实现楼主的意思,干脆放在一个窗体中,事先把webbrowser的visible属性设置为false,然后
private sub command1_click()
webbrowser1.visible=true
end sub
在码农的生活,很多级码农都有这样的经历,会被一个小小的技术问题拦住,然后进度跟不上了,被老板XXXX一大通了。心情不爽了。 好吧,这个曾经是我遇到拦路虎之一。但事实上不是什么大技术。技术就是一层纸,破了就破了。 这是一个关于如何跨窗体操作控件或过程的一个例子。比如,你窗体A的按键来执行窗体B的文本框变色。 Imports System Imports System.Threading Imports System.Text Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load CheckForIllegalCrossThreadCalls = False '不写这行,会出错,不允许线程的数据写到TextBox1.Text 去。 Form2.Show() End Sub Private Sub form1_FormClosing(sender As Object, e As EventArgs) Handles Me.FormClosing ' If runThread.IsAlive = True Then runThread.Abort() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '用的是委托方式 Me.Invoke(New MethodInvoker(AddressOf THREAD2)) End Sub Private Sub THREAD2() Static j As Integer j = j + 1 TextBox1.Text = " 这是 [线程] 操作" & vbCrLf & _ " Button2被点了: " & j & " 次" & vbCrLf & "要求是from2.textbox.text= textbox1.text 。[问题]但为什么不能成功显示呢?" End Sub Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged Form2.TextBox1.Text = TextBox1.Text End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Static j As Integer j = j + 1 TextBox1.Text = " 这是 [非线程] 操作" & vbCrLf & _ "Button3 点击了: " & j & " 次" & vbCrLf & _ "要求是from2.textbox.text= textbox1.text, 可以成功显示,这个是对的。" End Sub End Class

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧