C sharp windows form ,başka bir formun elamanına / kontrolüne erişme

  1. bkrslmz
    8
    262
    7/9/2018 2:59:00 PM

    Bir formdan başka bir form kontrolüne erişirken Cannot access private field 'diferFormLabel1' here hatası alıyorum. .Aşağıda ki kodda ,

     public partial class Form1 : Form
     {
        DigerForm dgrfrm = new DigerForm();
        public Form1()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            dgrfrm.Show();
        }
    
        private void button2_Click(object sender, EventArgs e)
        {
            dgrfrm.digerFormLabel1.Visible = false;
        }
     }
    

    dgrfrm.digerFormLabel1.Visible = false; satırında , digerFormLabel1 altı kırmızı çizili oluyor ve yukar da ki hatayı veriyor üzerine gelince.

    Projeyi derleyince de ;

    'WindowsFormsApplication1.DigerForm.digerFormLabel1' is inaccessible due to its protection level

    hatasını alıyorum

    c# windows-forms 4 ay önce 148 Görüntüleme

( 2 ) Cevap

  1. black mirror
    10
    2479
    7/9/2018 3:25:00 PM

    Form da bir class mantığındadır. Başka bir class , bir başka clasın private değerine erişemez.Public olması lazım erişmesi için.

    Çözüm için;

    digerFormLabel1 üzerine gel ,tek tıkla seç ve f12 ile tanımlandığı yere gidip , private olan access modifier ı public yap. Düzelecektir.

    Access modifiers daha detaylı incelemek istersen ; https://docs.microsoft.com/tr-tr/dotnet/csharp/language-reference/keywords/access-modifiers

  2. cavitemre
    6
    1993
    7/9/2018 3:38:00 PM

    Kontrolü public yapmak yerine , DigerForm WindowsForm'u içine şu metodu koyup da yapabilirsin

     public void VisibleDegistir(bool deger)
     {
            this.digerFormLabel1.Visible = deger;
     }
    

    sonra Form1 den bu metodu çağır sadece ,

    dgrfrm.VisibleDegistir(false);
    

Cevabınız