我試圖尋找,但沒有找到任何東西,給了我完全是我一直在尋找。我正在創建一個WPF桌面應用程序,最終將有四個或五個窗體。每份表格都會收集通過電子郵件發送的數據。我還創建了一個單獨的類(SendMail),它具有發送電子郵件的代碼。我希望能夠從各種形式的文本框中訪問文本,並通過SendMail類中的方法發送它們。訪問數據
目前,我只設置了幾個字段和下一個頁面,提交和退出按鈕兩種基本形式。我希望能夠從任何頁面提交數據,如果以下任何頁面都不需要填寫。我目前能夠通過內部屬性從SendMail類訪問每個表單,當我點擊第一個表單上的Submit按鈕時,電子郵件正確發送。但是,如果我轉到下一個表單並點擊提交按鈕,我會收到一個「引用未設置爲對象的實例的對象引用」錯誤,以引用第一個表單上的文本框的文本。我假設通過轉到第二種形式,第一種形式的實例不再存在。
我拍了幾張編程類早在大學幾年前,但現在我已經決定要更認真學習對我自己。我讀過幾本書,但只學了幾個月,所以我可能以錯誤的方式接近。任何幫助表示讚賞。
編輯 - 下面是代碼的一些樣品,作爲請求。我從SendMail類中刪除了電子郵件地址/密碼。
第一窗口
public partial class MainWindow : Window
{
SendMail page1;
// Properties to allow access to SendMail.
internal string CmbEmail
{
get { return this.cmbEmail.Text; }
}
internal string DateWritten
{
get { return this.dateWritten.Text; }
}
public MainWindow()
{
InitializeComponent();
page1 = new SendMail(this);
}
private void btnSubmit_Click_1(object sender, RoutedEventArgs e)
{
page1.Email();
}
private void btnNextPage_Click(object sender, RoutedEventArgs e)
{
Window1 nextPage = new Window1(this);
nextPage.Show();
this.Close();
}
}
第二個窗口
public partial class Window1 : Window
{
SendMail page2;
public Window1(MainWindow parent)
{
InitializeComponent();
page2 = new SendMail(this);
}
private void btnExit_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
page2.Email();
}
}
的SendMail類
class SendMail
{
MainWindow page1;
Window1 page2;
public SendMail(MainWindow form)
{
page1 = form;
}
public SendMail(Window1 form)
{
page2 = form;
}
public void Email()
{
NetworkCredential cred = new NetworkCredential("", "");
MailMessage msg = new MailMessage();
msg.To.Add("");
// Send an email to address in the Email field, if not empty.
if (page1.CmbEmail != "") // This is the line throwing the error, but only when submitting from the second window.
{
msg.To.Add(page1.CmbEmail);
}
msg.From = new MailAddress("");
msg.Subject = "Garment Order " + page1.DateWritten.ToString();
msg.Body = "Test email";
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.Credentials = cred;
client.EnableSsl = true;
client.Send(msg);
}
}
在這裏發佈您的代碼 – VladL
WPF沒有表格。發佈引發錯誤的行的代碼。 – Paparazzi
告訴我們你試過的東西 – Luv