我有两个表单。在第一种形式中,有一个带有“登录”文本的按钮。点击此按钮,我将打开另一个表单,我可以使用用户名和密码登录。然后有一个按钮“继续”,它将验证用户名和密码,然后关闭第二个表单。然后它会将第一个表单中“登录”按钮的文本更改为“欢迎”,+用户名。
一切正常,但我无法更改第一种形式的按钮的文字。我知道在关闭 Form2 后我需要刷新 Form1 。但我无法做到。
答案 0 :(得分:2)
我会这样做,我在form2
上有一些记录我输入的文字。
public partial class Form2 : Form {
public string InputText = ""; //use this to record whatever is inputed in the Form2 by the user
//somewhere else in the code
public void foo(){ //this may be closing event or button pressed event
InputText = textBoxInForm2.Text; //record the input from `form2` textbox
this.DialogResult = DialogResult.OK; //mark as ok
}
//This is exactly the foo above, but just in case you wonder how the event FormClosing look like:
//Add this event handler on your Form2
private void Form2_FormClosing(object sender, FormClosingEventArgs e) {
InputText = textBoxInForm2.Text; //record the input from `form2` textbox
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
}
然后在form1
中,您可以form2
打开ShowDialog
。然后,如果对话框按照您想要的方式生成,请执行以下操作:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
Form2 form2 = new Form2(); //this must be declared in form1
if (form2.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
textBoxInForm1.Text = form2.InputText; //grab the input text
}
}
}
然后使用textBoxInForm1
form2
编辑:在我给出的示例中,form2
在form1
施工中创建。这显然可能并非总是如此。但是,示例显示强调form2
必须在form1
域内才能访问。在这种情况下,作为在constructor
中声明的对象。您可以根据需要放置form2
创建的位置:作为property
Form1
类,Form1
方法之一,等等
答案 1 :(得分:0)
无需在表单中返回。
您应该创建另一个表单类并根据您的要求进行设计。 然后激活此表单以完成您的任务。