问题描述
为了达到查询效果,在打开了FORM1以后在FORM1有一个查询按钮,能打开FORM2然后返回一个参数值,例如123,那么如果将返回的123更新到FORM1的TEXTBOX1呢
解决方案
解决方案二:
可以给窗体添加一个共有属性,或者共有方法,只要别个可以访问到的就行……比如,Form2代码:publicclassForm2:Form{publicstringValueText{get;set;}privateTextBoxtxt_Input;publicForm2(){txt_Input=newTextBox();txt_Input.Location=newPoint(10,10);txt_Input.Size=newSize(100,20);txt_Input.TextChanged+=newEventHandler(txt_Input_TextChanged);this.Controls.Add(txt_Input);this.ClientSize=newSize(120,40);}privatevoidtxt_Input_TextChanged(objectsender,EventArgse){this.ValueText=txt_Input.Text;}}
在Form1中的按钮事件这样写
解决方案三:
Form2frm=newForm2();frm.ShowDialog(this);MessageBox.Show(frm.ValueText);
解决方案四:
textBox.text=数据结果.ToString
解决方案五:
能否写清楚点
解决方案六:
在Form1窗体中//定义一个按钮事件打开Form2privatevoidbutton1_Click(objectsender,System.EventArgse){Form2f2=newForm2();f2.Tag=this;f2.Show();}//定义一个公共方法用于修改Form1上textBox1的值publicvoidSetTextBox(stringstrValue){this.textBox1.Text=strValue;}
在Form2窗体中//按钮事件调用Form1中的SetTextBox方法来设置Form1中textBox1的值privatevoidbutton1_Click(objectsender,System.EventArgse){Form1f1=(Form1)this.Tag;f1.SetTextBox("123");}
解决方案七:
请问如果我要返回10个值,那么应该如何处理?
解决方案八:
另一种方法用api消息传递usingSystem.Runtime.InteropServices;publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}//声明API函数[DllImport("User32.dll",EntryPoint="SendMessage")]privatestaticexternintSendMessage(inthWnd,//handletodestinationwindowintMsg,//messageintwParam,//firstmessageparameterintlParam//secondmessageparameter);[DllImport("User32.dll",EntryPoint="FindWindow")]privatestaticexternintFindWindow(stringlpClassName,stringlpWindowName);//定义消息常数publicconstintUSER=0x500;publicconstintTEST=USER+1;//向窗体发送消息的函数[Page]privatevoidSendMsgToMainForm(intMSG){Form2frm=newForm2();frm.Show();intWINDOW_HANDLER=FindWindow(null,@"Form2");if(WINDOW_HANDLER==0){//thrownewException("CouldnotfindMainwindow!");}SendMessage(WINDOW_HANDLER,MSG,100,200);}privatevoidbutton1_Click(objectsender,EventArgse){SendMsgToMainForm(USER);}}publicpartialclassForm2:Form{publicForm2(){InitializeComponent();}protectedoverridevoidDefWndProc(refSystem.Windows.Forms.Messagem){switch(m.Msg){//接收自定义消息USER,并显示其参数caseForm1.USER:stringmessage=string.Format("Receivedmessage!parametersare:{0},{1}",m.WParam,m.LParam);textBox1.Text=message;break;default:base.DefWndProc(refm);break;}}}
解决方案九:
引用6楼tonny688的回复:
请问如果我要返回10个值,那么应该如何处理?
那传参数的时候就传数组或集合
解决方案十:
我同意2楼的看法
解决方案十一:
定义一个静态全局变量就可以了,如果是多个可以定义为数组或是结构体(类也可以)就可以搞定了,
解决方案十二:
静态公共变量吧,最省事
解决方案十三:
static定义个变量,方便,快捷