窗体间调用和控件赋值的问题,急,请高手帮忙!

miller0113 2011-09-13 08:50:44
我的主窗体为Form1
窗体上有一个textbox1控件,一个timer控件,一个mapinfo object
定义了一个回调函数 line(),在一个clsline.vb类下面
程序加载时运行了mymapinfo.Do(create Buttonpad ""callbak" As Toolbutton ID 2003 drawmode 34 cursor 0 calling OLE “line”) ‘(这行是说当mapinfo控件执行 ID 2003 工具时调用 line函数)
public Sub line(Byval zCmdstr As sting)
{
....
Form1.timer1.Enable=true
...
}
Private Sub timer1_tick()
{
timer1.enable=False
me.TextBox1.Text="aaa"
MsgBox(me.TextBox1.Text) '这行可以显示aaa,但是Form1上面TextBox.Text还是bbb
}
程序执行时点击工具栏按钮,运行 mapinfo 的ID 2003工具,则调用tool()函数,然后执行time1_tick,可是对me.TextBox1.Text赋值没有作用,

就是比如me.textbox1.text原来的值是“bbb”
在函数中执行了:me.textbox1.text=“aaa”
msgbox(me.textbox1.text),弹出的对话框显示“aaa”,(说明在函数体中已经赋值了)
但是运行完该函数textbox1.text的值还是“bbb”

如果我在timer1_tick()函数中给其它的Form2上的textbox2赋值,并show(),每次点击都会显示出一个新建的Form2。好像是自动new了一个新的Form2。也就是说明我在给Form1.textbox1赋值的时候也是新建了一个Form1并赋值的,所以显示不出来。
我改为
dim f as form=new Form1后, 并用f.show()显示主窗体,则每次执行me.TextBox1.Text="aaa"就会出错,自动跳出。

我该如何调用窗体啊,我认为应该用dim f as form=new Form1, 并用f.show()的方法,可是这样timer_tick函数里面对自身控件赋值时可以用me.textbox1.text控件赋值吗,为什么出错?请高手帮忙??????急

...全文
143 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pgxuser 2011-09-22
  • 打赏
  • 举报
回复
VB.NET不懂,帮你顶一下。
wl58796351 2011-09-22
  • 打赏
  • 举报
回复
看了你的描述,我都不想编程了,
ckp00001 2011-09-22
  • 打赏
  • 举报
回复
不是同一个线程,赋值往往会出错,可用委托来赋值。
例如:


F2.anonymousDelegate =new Func<String,String>((x) =>
{
this.textBox1.Text = x;
return textBox2.Text;
});
this.textBox3.Text = (string)this.anonymousDelegate.DynamicInvoke(textBox2.Text);



AddHandler F2.SendEvent, New Form2.Form2Delegate(Sub(m As String) TextBox1.Text = m)
pingker 2011-09-15
  • 打赏
  • 举报
回复
你讲的很乱,看了很头疼。你应该好好整理一下。
miller0113 2011-09-14
  • 打赏
  • 举报
回复
为什么没人回答啊, 自己顶

16,549

社区成员

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

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