如何通过单击另一个表单的按钮更改一个表单中的按钮文本?

时间:2015-12-28 07:35:48

标签: c# winforms

我有两个表单。在第一种形式中,有一个带有“登录”文本的按钮。点击此按钮,我将打开另一个表单,我可以使用用户名和密码登录。然后有一个按钮“继续”,它将验证用户名和密码,然后关闭第二个表单。然后它会将第一个表单中“登录”按钮的文本更改为“欢迎”,+用户名。

一切正常,但我无法更改第一种形式的按钮的文字。我知道在关闭 Form2 后我需要刷新 Form1 。但我无法做到。

2 个答案:

答案 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

编辑:在我给出的示例中,form2form1施工中创建。这显然可能并非总是如此。但是,示例显示强调form2必须在form1域内才能访问。在这种情况下,作为在constructor中声明的对象。您可以根据需要放置form2创建的位置:作为property Form1类,Form1方法之一,等等

答案 1 :(得分:0)

无需在表单中返回。

您应该创建另一个表单类并根据您的要求进行设计。 然后激活此表单以完成您的任务。