如何在不必返回的情况下从另一个对象写入表单文本框

时间:2010-12-16 22:02:34

标签: windows winforms

我正在处理Windows应用程序表单,我有一个多行文本框,我想从另一个对象写出输出。我看到有类似的帖子关于从一个文本框到另一个表单的文本框中获取文本。但是,我正在使用mainform并且无法再创建另一个。

那么如何从另一个类中为mainform的.Text赋值?

2 个答案:

答案 0 :(得分:2)

您可以在获取或设置控件属性的表单上创建公共属性,例如

public partial class Form1 : Form
{        

    ...

    public string OperatorId 
    { 
        get { return OperatorIdField.Text.Trim().ToLower(); }
    }

    public string Password
    {
        get { return PasswordField.Text.Trim().ToLower(); }
    }

    ...

}

(OperatorIdField和PasswordField是文本框。在我的示例中,属性是只读的,即它们只有“get”方法。在您的情况下,您还必须添加“set”方法。

要将主窗体暴露给其他对象,可以创建一个暴露主窗体的静态成员,例如。

static class Program
{
    public static Form MainForm;

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        MainForm = new Form1();

        Application.Run(MainForm);
    }
}

当另一个对象需要获取密码时,代码将类似于:

string password = Program.MainForm.Password;

答案 1 :(得分:1)

第二个表单应该有一些事件,一旦需要在主窗体中更改文本框值,就可以调用它。主表单应该订阅此事件并在某个eventHandler中更改文本。