如何从文本框访问属性到另一个表单

时间:2014-09-29 10:15:49

标签: c# winforms

我正在尝试制作一个向gmail服务器发送电子邮件的程序。我已完成目标,但现在我的下一个目标是创建一个登录表单,我可以使用不同的Gmail帐户登录并发送邮件。

以下是Login表单的代码:

private void btnLogin_Click(object sender, EventArgs e)
{
    User user = new User();
    user.Email = textBoxEmail.Text;
    user.Password = textBoxPassword.Text;
}

我希望我的user.Emailuser.Password以第二种形式(主要形式)保存,即:

private void btnSend_Click(object sender, EventArgs e) {
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

    MailMessage mail = new MailMessage();
    mail.From = new MailAddress(/*I want user.Email to be here */,"Pavel Valeriu");
    mail.To.Add(textBoxTo.Text);
    mail.Subject = textBoxSubject.Text;
    mail.Body = richText.Text;

    SmtpServer.Port = 587;
    SmtpServer.Credentials = new System.Net.NetworkCredential("pavelvaleriu24@gmail.com", /* and user.Password here */);
    SmtpServer.EnableSsl = true;

    SmtpServer.Send(mail);

    MessageBox.Show("mail sent");
    Close();
}

6 个答案:

答案 0 :(得分:1)

您可以通过构造函数

将登录表单中的值传递给主窗体

FormLogin:

private void btnLogin_Click(object sender, EventArgs e)
{
    User user = new User();
    user.Email = textBoxEmail.Text;
    user.Password = textBoxPassword.Text;
    FormMain frm = new FormMain (textBoxEmail.Text,textBoxPassword.Text);
    frm.show();
}

FormMain:

public FormMain(string _email,string _password)
{
   InitializeComponent();
   Email = _email;
   Password = _password;
}
string Email = sting.Empty;
string Password = string.Empty;

private void btnSend_Click(object sender, EventArgs e)
{
    MailMessage mail = new MailMessage();
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

    mail.From = new MailAddress(Email ,"Pavel Valeriu");
    mail.To.Add(textBoxTo.Text);
    mail.Subject = textBoxSubject.Text;
    mail.Body = richText.Text;
    SmtpServer.Port = 587;
    SmtpServer.Credentials = new System.Net.NetworkCredential("pavelvaleriu24@gmail.com", Password );
    SmtpServer.EnableSsl = true;
    SmtpServer.Send(mail);
    MessageBox.Show("mail Send");
    Close();
}

编辑: -

包含表单的默认构造函数

public FormMain()
{
  InitializeComponent();
}

答案 1 :(得分:0)

您可以使用字段static class UserInformation定义static string Username& static string Password以及第一种形式

UserInformation.Username = "Sth";

以第二种形式

youTextBox.Text = UserInformation.Username.

请阅读http://msdn.microsoft.com/en-us/library/79b3xss3.aspx了解更多信息

答案 2 :(得分:0)

您可以在第一个位置声明用户classpublic static

public static class User...
...
private void btnLogin_Click(object sender, EventArgs e)
{

    User.Email = textBoxEmail.Text;
    User.Password = textBoxPassword.Text;
}

并在主窗体上访问Form1的用户属性:

...
 mail.From =Form1.User.Email

答案 3 :(得分:0)

如果安全性和设计不是大问题,并且您只是希望它能够正常工作,那么您可以继续创建一个可以为您保存此信息的静态类,如数据提供者。

public static class LoginDataProvider
{
    public static string Email {get; set;}
    public static string Password {get; set;}
}

然后您可以继续保存登录表单中的信息:

LoginDataProvider.Email = textBoxEmail.Text;
LoginDataProvider.Password = textBoxPassword.Text;

然后您可以继续以相同的方式检索第二种形式的信息。

答案 4 :(得分:0)

如果您正在使用ASP.NET开发应用程序,则可以在“会话”中提及用户名和密码,您可以使用窗口应用程序,将凭据存储在全局变量中并访问任何Web表单

答案 5 :(得分:0)

当您创建主窗体的对象时,在对用户进行身份验证时,创建一个constructor以传递用户的电子邮件&密码如

mainForm(string userEmail, string password) or mainForm(User user)

所以

User user = new User();
user.Email = textBoxEmail.Text;
user.Password = textBoxPassword.Text;

If(user.Authenticate())
{
    //call new MainForm(user)