当前位置:编程学习 > C#/ASP.NET >>

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

我的主窗体为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控件赋值吗,为什么出错?请高手帮忙??????急

--------------------编程问答-------------------- 为什么没人回答啊, 自己顶 --------------------编程问答-------------------- 你讲的很乱,看了很头疼。你应该好好整理一下。 --------------------编程问答-------------------- 不是同一个线程,赋值往往会出错,可用委托来赋值。
例如:

        
                  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)
--------------------编程问答-------------------- 看了你的描述,我都不想编程了, --------------------编程问答-------------------- VB.NET不懂,帮你顶一下。
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,