一个Form赋值给object类型变量,然后给这个form里面的Textbox赋值出错

aha99 2007-08-07 07:30:08
新规一个工程,在默认建立的Form1上追加一个button1和一个Textbox1,然后追加一个module1,module1里面追加下面代码
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs ) Handles Button1.Click
Call a()
End Sub
End Class

Module Module1
Public sub a()
dim obj as Object
obj = Form1
obj.Textbox1.Text = "Test"
'上面这行编译不出错,运行的时候出错,提示在Form1内找不到Textbox1这个变量。VB6中运行能通过,而且一个从VB6用工具升级到.net的的程序中又几乎一样的写法,就能运行通过。请高手指点一下,这种问题是什么原因引起来的,谢谢。
End Sub
End Module




...全文
278 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aha99 2007-08-08
  • 打赏
  • 举报
回复
调查清楚了,升级的时候确实把控件改成public了。
snto 2007-08-07
  • 打赏
  • 举报
回复
VB6升级上来的应该是被升级程序更改了代码或者是程序集配置的问题,具体说不清楚,因为vb6到vb.net的变化太大了,真正转换的时候(特别是大型项目),会产生大量的问题,通常我都是rebulid的
snto 2007-08-07
  • 打赏
  • 举报
回复
1.在ide中把 TextBox1 的 Modifiers 属性 改为 public
2.如fht123() 所说

另不建议楼主使用跨模块的调用形式,虽然方便,但用时候甚至得不偿失
aha99 2007-08-07
  • 打赏
  • 举报
回复
我已经试过了,改成public好用,但是为什么那个VB6升级上来的好用呢?这台机器没有开发环境,明天上班看看那个VB6升级上来的是不是把控件定义成public了。
---- to fht123
那样写是肯定好用的,谢谢。我现在只想知道那个升级上来的程序和我的程序为什么运行结果不一样。
aha99 2007-08-07
  • 打赏
  • 举报
回复
我已经试过了,改成public好用,但是为什么那个VB6升级上来的好用呢?这台机器没有开发环境,明天上班看看那个VB6升级上来的是不是把控件定义成public了。
---- to fht123
那样写是肯定好用的,谢谢。我现在只想知道那个升级上来的程序和我的程序为什么运行结果不一样。
aha99 2007-08-07
  • 打赏
  • 举报
回复
我已经试过了,改成public好用,但是为什么那个VB6升级上来的好用呢?这台机器没有开发环境,明天上班看看那个VB6升级上来的是不是把控件定义成public了。
---- to fht123
那样写是肯定好用的,谢谢。我现在只想知道那个升级上来的程序和我的程序为什么运行结果不一样。
amandag 2007-08-07
  • 打赏
  • 举报
回复
声明 TextBox1 为 Public
fht123 2007-08-07
  • 打赏
  • 举报
回复
这样写试试.

Module MyModule

Public Sub a()
Dim frm As New Form1

frm.Textbox1.Text = "test"

End Sub

End Module
lnwuyaowei 2007-08-07
  • 打赏
  • 举报
回复
楼上正确.
Avoid 2007-08-07
  • 打赏
  • 举报
回复
系统默认控件为protect,你改成public就行了

16,549

社区成员

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

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