我对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