再 vb.net 不同的窗体中 如何进行数值的传递?

netice_cn 2006-03-12 11:14:30
再 vb.net 中 如何进行数值的传递?
比如 : 一个用户再登陆窗口 输入了 a
如何在进入主窗口里,调用 a ?

需要用什么方法能记住 a ??
...全文
197 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingshangren 2006-03-13
  • 打赏
  • 举报
回复
多谢各位的帮助啊!我是这么想的,我就是想定义了个变量,dim x as boolean
让X在用户在Textbox1中输入用户名是,接收到该用户的vip的值,并把这个值传到FrmMain中作为判断条件。不是知道代码怎么写,多谢了啊!等呢!
qingshangren 2006-03-12
  • 打赏
  • 举报
回复
我就是netice_cn (网冰) 如果能解决问题 我可以继续加分!
是这样的,这个问题的具体情况我再说一下吧!就是我这里有一个登录窗体(Frmlogin)一个窗体(FrmMain)我想设一个权限还判断两种用户的登录。当管理员登录时可以打开主窗体中所有的子窗体,当一般员工登录时,有一部分子窗体是不能看到的!我用了一个方法:
在FrmMain中:Sub ShowMune(Byval ShowOrHide As Boolean)
MenuItem1.Visible= ShowOrHide
MenuItem2.Visble=ShowOrHide
.........
End Sub
然后在 窗体加载时调用:
Private Sub FrmMain_load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
If 用户=管理员 then
ShowMuen(True)
else
ShowMune(False)
End If
End Sub
在这个判断中主要是这个条件语句怎么写!
在Frmlogin 中有两个TextBox 两Button 分别是: TbUser, Tbpwd ,BtOK,Btclose
当我点击TbOK 时在进入主窗体时怎么要把写入TbUser的TbUser.text的值取出并判断此是不是管理员,这里连接了Admin(id user pwd vip )表中的user字段,并通过它来判断vip的值是还是否!把这个判断传到主窗体中做作为判断条件!
在线急等****************
programart_life 2006-03-12
  • 打赏
  • 举报
回复
如果数据项很多,你可以在上面程序取得Tag的地方直接取窗口里各控件的值。

例如
你的登陆窗口有一个用户名TextBox,名称为txtUserName,一个密码TextBox,名称为txtPassword,一个隐身登陆的CheckBox,名称chkHide。你需要取得txtUserName和chkHide
就可以这么写

a=frm.txtUserName.Text
b=CheckBox.value

但是这样会不会造成问题我就不清楚了,要高手指教。
李洪喜 2006-03-12
  • 打赏
  • 举报
回复
是那个地方定义成public static 的变量,都可以在不同的窗体之间使用。
一般情况是写一个公用的类比较好。
programart_life 2006-03-12
  • 打赏
  • 举报
回复
汗,按错键了,代码还没写完就发了。

dim frm as 你的窗口

if isnothing(frm) orelse frm.isdisposed then
frm=new 你的窗口
end if

if frm.showdialog()=dialogrusult.ok then
在这里取得frm.tag属性值,并处理他
frm.dispose()'//在这里销毁窗口
end if

你的窗口在单击OK按钮的处理程序里要整合各需要的值,再放入窗口的Tag
例如个值之间用一个不常用的字符分隔开来。
也许你可以把一个数组传如Tag,那样更方便,但是我没有这么做过,所以具体Tag能否放数组我就不清楚了。
programart_life 2006-03-12
  • 打赏
  • 举报
回复
我是用两个办法的
1、添加一个Modular,在那里定义需要的Public(Global)形变量。(数据比较多,且很多窗口要用到时)
2、利用窗口的Tag属性传递,代码如下形式
dim frm as 你的窗口

if isnothing(frm) orelse frm.isdisposed then
frm=new 你的窗口
end if

if frm.showdialog()=dialogr
de98441201 2006-03-12
  • 打赏
  • 举报
回复
可以用代表或事件 也可一实现不过比较麻烦
mchp 2006-03-12
  • 打赏
  • 举报
回复
两个窗口
Form1 要将TextBox1的值传给Form2
Private Sub Button1_Click() Handles Button1.Click
Dim f As Form2 = New Form2(TextBox1.Text)
f.Show()
End Sub

Form2 重载构造函数 ,接受值,同理可传多个
Public Sub New(ByVal str As String)

MyBase.New()
InitializeComponent()

dim s as string = str
End Sub
yasmong 2006-03-12
  • 打赏
  • 举报
回复
支持楼上
programart_life 2006-03-12
  • 打赏
  • 举报
回复
你自己的思路不是很清楚了么?再套用上面我们提供的方法不就OK了?

判断部分程序如下(用adodb示例):

dim s as string'//查询语句
dim rst as new adodb.recordset
s="select * from [admin] where [user]='" & encryp(tbUser.text) & "' and pwd='" & encryp(tbpwd.text) & "'"
rst.open s,数据库链接

if rst.eof=rst.bof then
用户名或密码错误
else
如前面几帖所说,假如你定义了全局变量txtUser
txtUser=tbUser.text
if txtuser="管理员" then
showmenu(true)
else
showmenu(false)
end if
end if

上面的程序encryp是假定的你数据库中用户名和密码是用encryp加密的。加密程序如下
function encryp(byval s as string) as string
加密程序体,并且return加密后的字串
end function

登陆窗口关闭后,其他窗口可以通过全局变量txtUser取得当前登陆用户的名称。

16,554

社区成员

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

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