none
C# da MDI içinden CHILD formun kontrollerini yönetme RRS feed

  • Soru

  • Selamlar.. Çözemiyorum. Lütfen destek olunuz. MDI menüzünden CHILD formun textBox kontrolündeki yazıyı kalınlaştırmak istiyorum.

    Form1 MDI form. isMDIContainer true olarak ayarlandı.

    MDI da bir menü var. Menüdeki <Form2> tıklanınca Form2 CHILD olarak geliyor. Sorun yok.

    private void form2ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form2 frm = new Form2();
                frm.MdiParent = this;
                frm.WindowState = FormWindowState.Maximized;
                frm.Show();

            }

    MDI daki menüden <Kalın> item 'ı tıklanınca CHILD olan Form2 deki txtMetin yazısı Bold yapılacak. HATA VERMİYOR ancak yapmıyor da.  

    private void kalinToolStripMenuItem_Click(object sender, EventArgs e)
            {
                  Form2 frm2 = new Form2();            

                 frm2.txtMetin.Font = new Font(frm1.txtMetin.Font, frm1.txtMetin.Font.Style ^ FontStyle.Bold);
             }


    9 Aralık 2020 Çarşamba 15:47

Yanıtlar

  • Aslında yapıyor. İki tane form2 oluşturuyorsunuz, ilkini Show ettiğiniz için görüyorsunuz diğerini göremiyorsunuz. O butona her bastığınızda  da yeni bi tane daha form2 ekliyorsunuz. Var olan açık form2 instance'ını bulup onu değiştirmelisiniz.
     private void kalinToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Form2 frm2 = this.MdiChildren.Cast<Form>().SingleOrDefault(p => p is Form2) as Form2;
      if(frm2 != null)            
         frm2.txtMetin.Font = .....;
    }


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com



    9 Aralık 2020 Çarşamba 16:09
    Moderatör

Tüm Yanıtlar

  • Aslında yapıyor. İki tane form2 oluşturuyorsunuz, ilkini Show ettiğiniz için görüyorsunuz diğerini göremiyorsunuz. O butona her bastığınızda  da yeni bi tane daha form2 ekliyorsunuz. Var olan açık form2 instance'ını bulup onu değiştirmelisiniz.
     private void kalinToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Form2 frm2 = this.MdiChildren.Cast<Form>().SingleOrDefault(p => p is Form2) as Form2;
      if(frm2 != null)            
         frm2.txtMetin.Font = .....;
    }


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com



    9 Aralık 2020 Çarşamba 16:09
    Moderatör
  • Çok teşekkür ediyorum. Aslında dediğiniz gibi yapıyor ancak her tıklamada baştan açtığı için 

    Form2 frm2 = new Form2();      

    satırını global tanımlama alanına çekip kalın dan kaldırınca çözüldü. Sizin önerdiğiniz kodu yazmama bile gerek kalmadı. Bazen gözümüzün önünde duranı fark edemiyoruz.

    Sağlıkla kalın.

    9 Aralık 2020 Çarşamba 17:10
  • Bu seferde RAM de boşu boşuna yer kaplattınız. :(

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    11 Aralık 2020 Cuma 12:50
    Moderatör