请问:如何在一个窗体中调用另一个窗体??

abcsdk 2004-09-20 02:35:55
请问:如何在一个窗体中调用另一个窗体??
...全文
959 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcsdk 2004-09-24
  • 打赏
  • 举报
回复
面向对象我告诉你吧:定义一个类,可不是模块哦,把函数写在类里面调用这个类的成员函数就好。

蓝色稻草人:我看我们合作的非常愉快,我是从c++转向的.net面向对象很熟的,但是窗体方面经验还不够。你好象跟我相反干脆我们交个朋友,我是东北人特实在,现在北京做开发,刚到没多久。
我的邮件:winds_xp@sohu.com
祝我们以后交往顺利!!
zhangyueteng 2004-09-23
  • 打赏
  • 举报
回复
早说啊 !!! 我告诉你我 在vb里是怎么做的 .net我想也可以实现类似的调用只是有点不像面向对象风格了
你可以将事件中的代码改写成一个窗体级Public函数 在show 这个窗体之后 调用这个函数就ok了啊
大家帮我想想 可不可以用面向对象技术改写以上功能,这样的话它会显的和其他程序协调一些。
wmzsl 2004-09-22
  • 打赏
  • 举报
回复
窗体之间的变量传递,可以声明一个类不就完了吗?里面的变量用public static来声明这样就不用声明新的对象也可以用,就类似全局变量!好好看看C#高级编程!那里面有这些,不过比较不容易理解!你就当public static是全局变量好了哈!使用方法!a.a1,a.a2就跟VB模块中的全局变量一样用!明白了吗?
public class a
{
public a()
{}
public static string a1;
public static string a2;
}
wmzsl 2004-09-22
  • 打赏
  • 举报
回复
都错了!如果按照上面写的,调用一次窗体不会出错,不信你试试多调用几次,肯定会出错的!要先判断是不是已经销毁和是不是NULL然后再NEW!否则多次调用出错!
abcsdk 2004-09-22
  • 打赏
  • 举报
回复
如果不用 Dim formBaobiao As New Form1 那么我该如何才能返回到原先的form1中呢??
abcsdk 2004-09-22
  • 打赏
  • 举报
回复
但是我的这种做法现在出现了问题:在实际使用中无法将调用窗体的值传递到被调用窗体中,而是新生成了一个窗体,代码如下:
Dim objProperData(0) As ProPerList
objProperData(0) = objPaperEdit.GetProperList

Dim formBaobiao As New Form1
formBaobiao.SetFlag("transfer")
formBaobiao.SetMessage(objProperData)
formBaobiao.Show()

这种问题怎么解决??
zhangyueteng 2004-09-22
  • 打赏
  • 举报
回复
楼上的思路很好 ,这样可以很好的对类成员进行封装,在赋值函数中在加些控制,这样比起直接用Public 变量共享存储单元安全些。只是增加了内存开销(现在的计算机配置,这点开销可以接受)。而且降低的模块间的偶合性--两个对象之间没有共享内存单元而是将需要的数据复制了一份。
其实这种做法是把 共享存储单元变成了共享代码(公共函数)
看来要实现两个模块之间通信是里不开 public
abcsdk 2004-09-22
  • 打赏
  • 举报
回复
我又有了一个新方法:可以在窗体类中加入成员变量,加入给成员变量赋值的函数即可
abcsdk 2004-09-22
  • 打赏
  • 举报
回复
我的实验结果是:弹出了n多个窗体但是没有报错,但是我感觉采用静态变量的方式还是很不错的,但是我不但要通过form1来改变form2中的数据而且还要同时激发form2中的事件,本来想利用load-form来实现现在实现不了了,大家再帮帮忙!!
zhangyueteng 2004-09-22
  • 打赏
  • 举报
回复
多次调用 在VB里会打开多个实例 我不知道该怎么解决 .net刚开始学不知道是不是也是这样
楼上说 先判断是不是已经销毁,和是不是NULL然后在 new 能不能给点代码看看怎么判断
另外我不明白的是 为什么用同一个句柄(dim frm as new frmConn)frm 多次调用后打开多个
frmConn窗体竟然不报错,这样其不是多个对象对应同一个句柄吗。是不是后来打开的对象用自己的地址改写了 frm 这样是不是 先打开的对象就失控了(内存泄露)
kissnono 2004-09-21
  • 打赏
  • 举报
回复
最方便的办法就是在公共模块中定义公共变量,
还可以定义一个类A,类A中定义public shared 变量,这样,同一项目所有窗体访问它时,都可读可写,效果和上一个差不多,当然也可以定义在form中.
也可以在几个form中定义public变量,互相修改来实现这样的功能.
zhangyueteng 2004-09-21
  • 打赏
  • 举报
回复
让我们把思路放宽点 两个窗体不也是两个相互独立的对象吗 他们之间的参数传递 和两个不同对象(可以隶属于同一个类)的情况一样吗?实现了如何在两个对象之间传递消息不就从 各个层次 上解决了类似得问题了吗?我是新手 刚从过程化程序设计响面向对象技术转变 有表达的不对的地方请指教
水如烟 2004-09-21
  • 打赏
  • 举报
回复
关于窗体间的引用,方法是比较多的,下面我稍为介绍一下一种较普通的方法。

建一个工程,两个窗体Form1和Form2,一个Module

Module的内容:

Module PublicParasModule
Public PublicForm As Form
End Module

Form1中加三个Button,补充的代码:

Public Form1Name As String = "It is me,Form1"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PublicForm = Me
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If TypeOf PublicForm Is Form2 Then
MsgBox(CType(PublicForm, Form2).Form2Name)
End If
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim frm As New Form2
frm.Show()
End Sub

Form2中加两个Button,补充的代码:

Public Form2Name As String = "It is me,Form2!"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TypeOf PublicForm Is Form1 Then
MsgBox(CType(PublicForm, Form1).Form1Name)
End If
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
PublicForm = Me
End Sub

现在运行试试看,启动对象Form1。
1zhk 2004-09-21
  • 打赏
  • 举报
回复
打开: Dim Frm1 As New 要找开的窗体
Frm1.Show()
不显示任务栏:ShowInTaskbar = False
关于两个窗体间进行交互传递数据参见
http://vb.studysea.net/BBS/DispBBS.jsp?BoardID=36&BMID=108&TopicID=2893
zhangyueteng 2004-09-21
  • 打赏
  • 举报
回复
定义公共变量是 不得已而为之的方法 。公共变量增加了你程序的偶合性,使程序不例于维护。而且容易出想意想不到的错误。定义一个类可以起到缓冲作用很大程度上降低了程序的复杂性但没有从根本上解决问题 。最好的办法就是 在设计程序是尽量避免模块之间参数传递
说了一大堆闲话后 想借这个地方请教一个同样的问题 。除了公共变量(Public)之外难道就没有其他的办法在两个模块间传递消息了吗?
请赐教。

gy348 2004-09-20
  • 打赏
  • 举报
回复
Form2 yourform =new Form();
youform.show();
yemao108 2004-09-20
  • 打赏
  • 举报
回复
设置全局变量Public就可以
比如说 Public str As String 中的str就可以在两个窗口间使用,最好在模块中设置,比较方便,某些时候。
tendotnet 2004-09-20
  • 打赏
  • 举报
回复
http://vb.studysea.net/BBS/DispBBS.jsp?BoardID=36&BMID=108&TopicID=2893
shixianyong 2004-09-20
  • 打赏
  • 举报
回复
http://dev.csdn.net/develop/article/22/22123.shtm
shixianyong 2004-09-20
  • 打赏
  • 举报
回复
Dim frm2 as new form2
frm2.show()
加载更多回复(6)
项目名称:高仿QQ2013通讯DEMO-10.30更新 版本号:10.30 最新版本 下载内容: (C#)CC2013局域网通讯源码一份, 可引用至工具箱最新版CSkin.dll-10.30版本界面库一份。 界面库更新说明: CC2013-10.30 1.由于SkinForm名字太多人使用,界面库命名正式改为CSkin.dll,官网www.cskin.net。 2.SkinTabControl标签添加菜单箭头,可点击展开菜单。 3.SkinTabControl添加标签关闭按钮。 4.修复部分文乱码问题。 5.优化好友列表右键菜单。 6.将窗体自定义系统按钮改为集合模式,可添加无数个自定义系统按钮。自定义系统按钮事件可以 e.参数 来判断。 7.增加360安全卫士-DEMO案例。 8.增加SkinAnimatorImg控件,用于支持位图动画的播放。如360的动态logo。 9.各种细节BUG优化。 CC2013-10.11 1.添加SkinTabControlEx,加入更加自定义的美化属性和动画效果。 2.添加SkinAnimator,通用动画控件。 3.添加Html编辑器控件 4.修复SkinButton图标和文本相对位置的BUG CC2013-9.26 1.优化好友列表CPU占用 2.好友列表加入好友登录平台属性:安卓 苹果 WEBQQ PC 3.优化标题绘制模式,新添标题绘制模式属性。 4.新添标题偏移度属性。 5.加入圆形进度条控件:ProgressIndicator。 CC2013-9.5.2 1.优化截图控件,截图工具栏加入新功能。 2.解决个人信息卡和天气窗体显示后不会消失的问题。 3.各种细节BUG优化。 CC2013-9.5.1 1.解决贴边左右隐藏的BUG。 2.解决窗体点击事件不能触发的问题。 3.优化SkinButton继承父容器背景色的代码。 4.解决SkinButton异常错误。 CC2013-9.3 1.好友列表右键菜单没反应问题。 2.新增美化控件SkinDatagridview。 3.密码软件盘回删不了文字问题。 4.双击窗体最大化,最大化后再双击恢复原大小,(win7)。 5.部分细节调优。 实现功能: 1.界面库多达25个自定义换肤控件,让每个控件设设属性就能达到你想要的效果,支持图片换肤和色调绘制。 2.四边阴影,毛边效果,可以设置阴影宽度和阴影颜色,支持所有系统。 3.拥有密码键盘输入,防护更贴心。 4.8种圆角窗体模式供你选择,淋漓尽致,润滑如圆。 5.登录主界面后,有登陆提示窗,提示上次登录的城市和时间。 6.皮肤随心变:拖动任意一张图片至主界面,就可以改变皮肤。 7.皮肤色调获取:改变皮肤的同时,将计算图片色调,再将其运用到窗体背景色。 8.皮肤尾部渐变:上下左右方均可实现,渐变皮肤。 9.皮肤拖拉方向:可以选择皮肤在拉伸的时候,粘着哪一边拖拉。 10.GDI+界面重绘,处理消息机制,3种移动模式和拉伸是否启用只需要设置一个属性的事就可以解决。 11.界面渐变闪现和闪退:不再像平凡的突然出现,采用API渐变机制,渐渐出现和消失,win7系统下还有动态缩小至任务的效果。 12.完美好友列表,可添加上千好友,不卡不掉线,还可以拖动好友到其他分组。 13.好友悬浮至头像可以查看详细资料卡。 14.窗口可调渐变后透明度:让窗体看起来更像是Vista玻璃窗体风格。 15.聊天窗口可发送图片,大文件,表情,还有震动。 16.按钮控件背景色拥有继承窗体背景主色调的功能,让整体色调保持一致。 17.更是有和如出一辙的扣扣截图。仿真度也达到100%,完美修复所有已知BUG。 18.聊天窗口,可以调字体颜色和字体样式等多项功能。 20.SkinLabel与SkinButton控件字体与窗体标题可以根据背景色暗亮度自动调节字体为黑还是白。 21.MessageBox提示框的美化,并继承调用窗口的色调与背景,MessageBox可所谓已达到帅气的不能再帅气的境界了。 22.天气皮肤自动变,所有窗体根据当地天气自动决定皮肤背景,CC最帅气功能之一。 23.个人资料卡及聊天窗体拥有动态CC秀展示。 24.主界面拖动换肤的同时,所关联的子窗体皮肤也会跟着变。 25.多线程大文件传输功能,支持无上限大文件传输,有进度条显示进程度。 26.界面库已封装了大图取主色调,颜色判断暗亮等多项功能。 27.如果你觉得获取天气让你的登录太慢不想要的话,注释相关调用方法即可快速登录。 界面库交流群:306485590 本人QQ:345015918 注意: Demo版不包括更新,为方便用户查看和使用属性等方法,dll只轻微加密。想反编译的就不要尝试了,里面有上百个类,改错改到你哭。 介意购买正版,永久更新配源码。 看截图或者想购买商业版的用户请访问以下地址: http://www.51aspx.com/code/TotalLikeQQ2013 特权:购买商业版的用户,有权利享有最快的更新服务,第一时间将最新版本的dll源码送到你手上。 使本项目源码或本项目生成的DLL前请仔细阅读以下协议内容,如果你同意以下协议才能使用本项目所有的功能,否则如果你违反了以下协议,有可能陷入法律纠纷和赔偿,作者保留追究法律责任的权利。 1、你可以在开发的软件产品使用和修改本项目的源码和DLL,但是请保留所有相关的版权信息。 2、不能将本项目源码与作者的其他项目整合作为一个单独的软件售卖给他人使用。 3、不能传播本项目的源码和DLL,包括上传到网上、拷贝给他人等方式。 4、以上协议暂时定制,由于还不完善,作者保留以后修改协议的权利。 时间:2013-7-5 作者: 乔克斯 请保留以上版权信息,否则作者将保留追究法律责任。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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