Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从文本框访问其他表单的属性_C#_Winforms - Fatal编程技术网

C# 如何从文本框访问其他表单的属性

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

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

以下是
登录
表单的代码:

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)