C# 如何从文本框访问其他表单的属性
我正在尝试做一个程序,发送电子邮件到gmail服务器。我已经完成了我的目标,但现在我的下一个目标是制作一个登录表单,我可以使用不同的gmail帐户登录并发送邮件 以下是C# 如何从文本框访问其他表单的属性,c#,winforms,C#,Winforms,我正在尝试做一个程序,发送电子邮件到gmail服务器。我已经完成了我的目标,但现在我的下一个目标是制作一个登录表单,我可以使用不同的gmail帐户登录并发送邮件 以下是登录表单的代码: private void btnLogin_Click(object sender, EventArgs e) { User user = new User(); user.Email = textBoxEmail.Text; user.Password = textBoxPassword
登录
表单的代码:
private void btnLogin_Click(object sender, EventArgs e)
{
User user = new User();
user.Email = textBoxEmail.Text;
user.Password = textBoxPassword.Text;
}
我希望将我的user.Email
和user.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();
}
您可以使用字段
静态字符串用户名
和静态字符串密码
以第一种形式定义静态类用户信息
UserInformation.Username = "Sth";
第二种形式
youTextBox.Text = UserInformation.Username.
有关更多信息,请阅读您可以从以下地址首次将用户
类
声明为公共静态
:
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
如果安全性和设计不是什么大问题,而您“只是想让它工作”,那么您可以继续创建一个静态类来保存这些信息,就像数据提供者一样
public static class LoginDataProvider
{
public static string Email {get; set;}
public static string Password {get; set;}
}
然后,您可以继续获取并在登录表单中保存信息:
LoginDataProvider.Email = textBoxEmail.Text;
LoginDataProvider.Password = textBoxPassword.Text;
然后,您可以继续以相同的方式在第二个表单中检索信息。您可以通过构造函数将值从登录表单传递到主表单 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();
}
如果您正在ASP.NET中开发应用程序,您可以在“会话”中以其他方式提及用户名和密码,您正在使用Windows应用程序,您可以将凭据存储在全局变量中,并在任何web表单中访问它。当您创建主表单的对象时,当用户经过身份验证时,创建一个
构造函数
来传递用户的电子邮件和密码,如
mainForm(string userEmail, string password) or mainForm(User user)
所以
此问题与
电子邮件标签无关。我帮你把它拿走了很多,这正是我想要的!我做了这个,但是现在我有一个错误“'sendmail.Form1'不包含一个接受0个参数的构造函数”…在表单中包括默认构造函数,邮件客户端的概念需要这样一个静态类和值,因为你需要用户名和密码在任何地方。。。
User user = new User();
user.Email = textBoxEmail.Text;
user.Password = textBoxPassword.Text;
If(user.Authenticate())
{
//call new MainForm(user)