我對C#非常陌生,並且正在磕磕絆絆。我明白需要封裝,但是每當我將一個工作應用程序分解爲不同的類時,我總會遇到問題。我寫了一個簡單的程序,允許用戶點擊清單列表中的複選框。這些項目顯示在一個文本框中,當點擊提交按鈕時,文本框的內容通過電子郵件發送到預定義的地址。該行...C#中的封裝問題(由於保護級別而不可訪問)
oMsg.Body = Form1.textBox1.text
給我錯誤:「MY_App.Form1.textBox1.text由於其保護級別而不可訪問」。是 Form1並Class1的如下...
namespace MY_App
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<string> ls = new List<string>();
private void Checkbox1_CheckedChanged(object sender, EventArgs e)
{
ls.Add("P.C. ");
}
private void Checkbox2_CheckedChanged(object sender, EventArgs e)
{
ls.Add("WYSE Terminal");
}
private void Checkbox3_CheckedChanged(object sender, EventArgs e)
{
ls.Add("Dual Monitors ");
}
public void button1_Click(object sender, EventArgs e)
{
InputText();
Class1.SendMail(textBox1.Text);
}
public void textBox1_TextChanged(object sender, EventArgs e)
{
}
public void InputText()
{
string line = string.Join(",", ls.ToArray());
textBoxTEST.AppendText(line);
}
然後通過電子郵件發送的類(1類)...
using System;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace MY_App
{
public class Class1: Form1
{
public void SendMail(string[] args)
{
try
{
Outlook.Application oApp = new Outlook.Application();
Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem
(Outlook.OlItemType.olMailItem);
Outlook.Recipient oRecip = (Outlook.Recipient)oMsg.Recipients.Add("[email protected]");
oRecip.Resolve();
oMsg.Subject = "Deskstop Standards: Required Items";
oMsg.Body = Form1.textBox1.text
oMsg.Display(true);
oMsg.Save();
oMsg.Send();
oRecip = null;
oMsg = null;
oApp = null;
}
catch (Exception e)
{
Console.WriteLine("{problem with email execution} Exception caught: ", e);
}
return;
}
}
}
我relize這是一噸的代碼,但我不知道在哪裏isulate問題。此外,我非常感謝任何幫助,但如果任何人都可以解釋答案,所以我不會繼續寫壞代碼,我真的很感激它。提前致謝。
讓我試試這個。 – 2boolORNOT2bool
確定Get/Set方法已經消除了可達性問題,但是我必須做一些其他的錯誤,因爲Class1.SendMail(textBox1.Text)現在拋出無效參數 – 2boolORNOT2bool
@ 2boolORNOT2bool:爲什麼你仍然在訪問textBox1.text? – sll