窗体间调用和控件赋值的问题,急,请高手帮忙!
我的主窗体为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);
--------------------编程问答-------------------- 看了你的描述,我都不想编程了, --------------------编程问答-------------------- VB.NET不懂,帮你顶一下。
AddHandler F2.SendEvent, New Form2.Form2Delegate(Sub(m As String) TextBox1.Text = m)
补充:.NET技术 , VB.NET