저는 C#에 매우 익숙하며 걸림돌이됩니다. 나는 캡슐화의 필요성을 이해하고 있지만, 일하는 애플리케이션을 다른 클래스로 분해 할 때마다 항상 문제가있다. 사용자가 인벤토리 목록의 체크 박스를 클릭 할 수있는 간단한 프로그램을 작성했습니다. 항목은 텍스트 상자에 표시되고 제출 단추를 클릭하면 텍스트 상자의 내용이 미리 정의 된 주소로 전자 메일로 전송됩니다. 선은 ... C#의 캡슐화 문제 (보호 수준으로 인해 비활성 됨)
oMsg.Body = Form1.textBox1.text
은 나에게 오류를 제공합니다 : "MY_App.Form1.textBox1.text이 인해 보호 수준에 inaccesible입니다." 다음과 같이 을 Form1 및 클래스 1은 ...입니다
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;
}
}
}
나는이 코드의 톤하지만 난 어디 isulate하는 모른다 relize 문제. 또한 모든 도움을 주시면 감사하겠습니다.하지만 누구든지 답변을 설명 할 수 있다면 나쁜 코드를 계속 작성하지 않아도됩니다. 감사하게 생각합니다. 미리 감사드립니다. 만큼 Class1
로 Form1
및 텍스트 상자 액세스 한정자에서 상속
시도해 보겠습니다. – 2boolORNOT2bool
Get/Set 메서드로 불투명도 문제가 제거되었지만 Class1.SendMail (textBox1.Text)이 잘못된 인수를 던져서 틀린 작업을 수행하고 있습니다. – 2boolORNOT2bool
@ 2boolORNOT2bool : 왜 여전히 textBox1.text에 액세스하고 있습니까? – sll