问题描述
我是初学的,现在做了一个form1窗口,有一个button1和一个textbox1,然后继承了一个窗口form2。我想实现点击form1窗口的button1时弹出窗口form2,在窗口form2中的textbox中输入一个值,然后点击button可以关闭form2.并且使这个值显示在form1中。我现在是在关闭form2时出了问题,总是关了一个的同时又会跳出来一个,而且值的显示也没实现,求教!希望有代码和说明
解决方案
解决方案二:
小小菜鸟小小回复一下在form1添加一个lable其text值等于form2中的textbox值form1的button中写show(form2)form2的button中写this.close()应该是没有问题的吧...
解决方案三:
form2的button中写this.close()我就是这么写的呀,然后就出现上面的问题了
解决方案四:
把button方法重写了因为Form1中的button的方法new一个form,同样你点继承他的窗口点button也会new一个窗口出来
解决方案五:
Form1中的代码namespaceWindowsFormsApplication1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}testt=newtest();privatevoidbutton1_Click(objectsender,EventArgse){stringa=textBox1.Text;Form2f2=newForm2(a,t);f2.ShowDialog();textBox1.Text=t.A;}}}Form2的代码namespaceWindowsFormsApplication1{publicpartialclassForm2:Form{publicForm2(){}privatestringa;testt;publicForm2(stringa,testt){this.a=a;this.t=t;InitializeComponent();}privatevoidForm2_Load(objectsender,EventArgse){textBox1.Text=a;}privatevoidbutton1_Click(objectsender,EventArgse){t.A=textBox1.Text;this.Close();}}}另外要添加一个辅助类classtestnamespaceWindowsFormsApplication1{publicclasstest{privatestringa;publicstringA{get{returna;}set{a=value;}}}}自己研究下吧写的太清楚了你看过以后又会忘记了
解决方案六:
Form1中的代码namespaceWindowsFormsApplication1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}testt=newtest();privatevoidbutton1_Click(objectsender,EventArgse){stringa=textBox1.Text;Form2f2=newForm2(a,t);f2.ShowDialog();textBox1.Text=t.A;}}}Form2的代码namespaceWindowsFormsApplication1{publicpartialclassForm2:Form{publicForm2(){}privatestringa;testt;publicForm2(stringa,testt){this.a=a;this.t=t;InitializeComponent();}privatevoidForm2_Load(objectsender,EventArgse){textBox1.Text=a;}privatevoidbutton1_Click(objectsender,EventArgse){t.A=textBox1.Text;this.Close();}}}另外要添加一个辅助类classtestnamespaceWindowsFormsApplication1{publicclasstest{privatestringa;publicstringA{get{returna;}set{a=value;}}}}自己研究下吧写的太清楚了你看过以后又会忘记了
解决方案七:
最好把你的码贴出来!
解决方案八:
前两天做毕设的时候碰到过类似的问题你可以在Form1中声明一个变量用来存储Form2中输入的文本例如:StringmyInput="";在Form2构造函数中添加一个参数privateForm1f1;publicForm2(Form1f){this.f1=f;}在调用的时候创建对象Form2f2=newForm2(this);f2.ShowDialog();点击关闭按钮的事件privatevoidcloseButton_click(Objectsender,EventArgse){f1.myInput=textbox1.text;this.Dispose();}回到Form1就可以使用myInput了说白了就是把Form1的当前对象当做参数传给Form2这样两个窗体就可以交互数据了
解决方案九:
不用写的太复杂了,看我下面的例子:Form1中的代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespacetest01{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}publicstaticstringText1;//定义字符串,接收form2中textbox的值privatevoidbutton1_Click(objectsender,EventArgse){Form2sh=newForm2();//点击按钮,显示form2sh.ShowDialog();this.label1.Text=Text1;//把从form2中接收过来的值显示在label上}}}再看form2的代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespacetest01{publicpartialclassForm2:Form{publicForm2(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){Form1.Text1=this.textBox1.Text;//把输入到textbox的值传给form1中定义的Text1字符串this.Close();//退出}}}
解决方案十:
用application.exit()也行啊!