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

  1. bkrslmz
    8
    47
    9.7.2018 14:59:00

    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 9 gün önce 67 Görüntüleme

( 2 ) Cevap

  1. black mirror
    9
    1549
    9.7.2018 15:25:00

    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
    1020
    9.7.2018 15:38:00

    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