Çözüldü C# Form'daki nesneyi farklı bir classta çağırma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Jroxy

Hectopat
Katılım
21 Aralık 2018
Mesajlar
365
Çözümler
3
Yer
Sivas
Daha fazla  
Meslek
Öğrenci
1662372248628.png

Buradaki checkbox'u
C#:
namespace Mail_Gönderme_Cart_Curt.Models
{
    public class SendMail
    {
 
       public void Microsoft(string GondericiAdSoyad,string GondericiMail,string GondericiPass,string AliciMail,string Baslik ,string icerik, string Ek)
        {
            SmtpClient sc = new SmtpClient();
            sc.Port = 587;
            sc.Host = "smtp.outlook.com";
            sc.EnableSsl = true;
            sc.Credentials = new NetworkCredential(GondericiMail, GondericiPass);


            MailMessage email = new MailMessage();
            email.From = new MailAddress(GondericiMail, GondericiAdSoyad);
            email.To.Add(AliciMail);
            email.Subject = Baslik;
            email.IsBodyHtml = true;
            email.Body = icerik;
            if (Ek != string.Empty)
            {
                email.Attachments.Add(new Attachment(Ek));
               
            }
                sc.Send(email);






        }
Şu şekilde kullanmak istiyorum fakat checkbox1 nesnesini çağıramıyorum.
C#:
 MailMessage email = new MailMessage();

            email.From = new MailAddress(GondericiMail, GondericiAdSoyad);

            email.To.Add(AliciMail);

            email.Subject = Baslik;
if(checkBox1.Checked==true)
{
    email.IsBodyHtml = true;
}
else
{
    email.IsBodyHtml=false;

}

           

            email.Body = icerik;

@M(i)usa
 
Son düzenleyen: Moderatör:
Çözüm
C#:
namespace Mail_Gönderme_Cart_Curt.Models
{
    public class SendMail
    {
 
       public void Microsoft(string GondericiAdSoyad,string GondericiMail,string GondericiPass,string AliciMail,string Baslik ,string icerik, string Ek)
        {

            SmtpClient sc = new SmtpClient();
            sc.Port = 587;
            sc.Host = "smtp.outlook.com";
            sc.EnableSsl = true;
            sc.Credentials = new NetworkCredential(GondericiMail, GondericiPass);


            MailMessage email = new MailMessage();
            email.From = new MailAddress(GondericiMail, GondericiAdSoyad);
            email.To.Add(AliciMail);
            email.Subject = Baslik;
            Form1 f1 = new Form1();
            if(f1.checkBoxHtml.Checked == true)
            {
                email.IsBodyHtml = true;
            }
            else
            {
                email.IsBodyHtml = false;
            }

Şu şekilde bir çözüm buldum fakat checkbox tikli olsa da tikli olmasa da html düzende yollamıyor epostayı.
Chekbox'ına iki defa tıkladığında checkBoxHtml_Changed fonksiyonu oluşacaktır. Daha sonra public olarak tanımladığın bir bool değerinin bunun içinde değiştirmelisin.
Tanımladığımız public bool html = false; ise;

C#:
private void checkBoxHtml_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBoxHtml.Checked == true)
                html = true;
        }else
        {
          html = false;   
        }

Şeklinde bir kod yazarsın. Daha sonra publicte tanımladığın bool'u Microsoft fonksiyonuna parametre verirsin. Bu parametreyi kontrol ederek içeriğinin html olup olmayacağını belirlersin.
C#:
namespace Mail_Gönderme_Cart_Curt.Models
{
    public class SendMail
    {
 
       public void Microsoft(string GondericiAdSoyad,string GondericiMail,string GondericiPass,string AliciMail,string Baslik ,string icerik, string Ek, bool kontrol)
        {

            SmtpClient sc = new SmtpClient();
            sc.Port = 587;
            sc.Host = "smtp.outlook.com";
            sc.EnableSsl = true;
            sc.Credentials = new NetworkCredential(GondericiMail, GondericiPass);


            MailMessage email = new MailMessage();
            email.From = new MailAddress(GondericiMail, GondericiAdSoyad);
            email.To.Add(AliciMail);
            email.Subject = Baslik;
            Form1 f1 = new Form1();
            if(kontrol == true)
            {
                email.IsBodyHtml = true;
            }
            else
            {
                email.IsBodyHtml = false;
            }
Fonksiyonun kodu da bu şekilde olur. Kontrol parametresine publicte tanımladığın bool'u verirsin. Yani metodunu çağırırken;
Microsoft(içerikler, alıcı vs., html); şeklinde olur.
Tabii ki ilgili client'ı public alanda bir defa açsa ve bu clientı da parametre olarak verip işlem yapsa hoş olur ancak arkadaşımız olusturduğu istemciyi bile Dispose ile serbest bırakmamış ya da using ile kullanmamış ki bu da yeni olduğunu gösterir. Bir gun o hatayla da karşılacak ve GC neden temizlemiyor dediğinde bu çözümu sunarak yardımcı oluruz. İyi forumlar.
Evet yeniyim ve yazdıklarınızı hiç anlamadım. :D Yazdıklarınız hakkında nasıl bir araştırma yapmalıyım.?
 

Geri
Yukarı