我遇到一个字符串问题

时间:2013-12-23 18:22:31

标签: c# string multithreading

在我的program.cs中我有这个:

[STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        String user = null;
        using (var login = new loginForm())
        {
            user = login.returnUser();
            if (login.ShowDialog() != DialogResult.OK) return;
        }
        Application.Run(new Form1(user));
    }

我正在尝试从loginForm中获取一个字符串,然后将其发送到Form1。 但字符串没有返回任何内容..

这是“login.returnUser();”

public string returnUser()
    {
        String user = usernameText.Text;
        return user;
    }

这应该正常吗?

3 个答案:

答案 0 :(得分:4)

在显示对话框之前,您正在调用returnUser() 你怎么期望它有价值?

您只想在用户输入内容后执行该操作。

答案 1 :(得分:0)

ShowDialog之后获取用户:

using (var login = new loginForm())
{
    // user = login.returnUser(); <-- Too soon
    if (login.ShowDialog() != DialogResult.OK) return;
    user = login.returnUser();
}

ShowDialog是导致对话框显示的原因。当用户单击要登录的按钮时,该方法将返回,您的usernameText文本框现在应该具有值。

答案 2 :(得分:0)

获取用户显示对话框()。

[STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        String user = null;
        using (var login = new loginForm())
        {

            bool invalid = login.ShowDialog() != DialogResult.OK; 
            user = login.returnUser();
            if(invalid)
               return;
        }
        Application.Run(new Form1(user));
    }