C# Hogyan lehet egy Form komponenseit elérni kívülről?

Ez a téma lezárásra került a moderátor által. A lezárás oka: 1 téma - 1 kérdés! Amennyiben egy témáról általánosságokban szeretnél beszélni, akkor a társalgóban nyisd meg a témádat!
C# Hogyan lehet egy Form komponenseit elérni kívülről?
2015-07-08T13:47:16+02:00
2015-07-08T16:02:56+02:00
2022-12-02T16:20:46+01:00
Kezdő_C#
A Delphi-t elég jól ismerem, de most a Visual C# tanulom.
Van egy csomó könyvem, de nem igazán találok benne összetett kérdésekre válaszokat.

Hogyan lehet egy adott Form komponenseit elérni kívülről?

Form1.button1.text = "Nem jó"
Ha form-on belül vagyok, és this.button1.text ="természetesen eléri" akkor eléri.
Sőt, ha this. ctrl+space akkor felsorolja az összes komponenst az ablakon.

Ha áthelyesítem a this.-t az ablak nevére, akkor miért nem látom a komponenseket?
Mutasd a teljes hozzászólást!

  • Keresni luxus, igaz? C# Form control elérése másik class-ból probléma - Tudástár - Prog.Hu

    Ne csak az elfogadott megoldást nézd, alternatív megoldás is van. Az elfogadott megoldás a legegyszerűbb, de tervezési szempontból nem feltétlenül a legjobb.
    Mutasd a teljes hozzászólást!
  • Nem luxus keresni! De ahogy 2 nappal ezelőtt sem értettem mi köze van  a belinkel topic-nak, úgy most sem értem ez nekem miben jó.

    Nem az a bajom , hogy nem hoztam létre a

    Form2 form2 = new Form2()
    Hiszen a form2.show(); működik megjelenik az ablak.
    De ugyan erről a változóról nem érem el a komponenseket!!!!

    Amit nem értek miért?

    Ha ugyanezt kipróbálom Form1-ről:

    // kipróbálom Delphi-ben akkor jó Form2.Show(); Form2.CheckBox1.Text := "működik delphi-ben" // kipróbálom Visual Bacic-ban akkor jó Form2.Show() Form2.CheckBox1.Text = "működik visual basicban is"" // Visual C#-ben nem megy !!!!!!!!!!!!!!!!! Form2.Show(); // megjelenik az ablak Form2.CheckBox1.Text = "C#-ben hibás";
     A hiba pedig: "Two_form.Form2.CheckBox1' is inaccessible due to its protection level"
    Mutasd a teljes hozzászólást!
  • A hibaüzenetből is kiderül, de anélkül is meg lehet mondani: alapértelmezetten private a komponensek láthatósága (nem véletlenül, mivel az OOP paradigma miatt nem nagyon kéne azokat kívülről elérni).

    A Properties ablakban a Modifiers property-nél lehet a láthatóságot állítani.

    Szerk.: Delphihez nem értek, de hátha segít, ott a this kulcsszó a Self. A láthatóság is hasonlóan működik: Private, Protected, Public stb.
    Mutasd a teljes hozzászólást!
  • Működik nagyon szépen köszönöm!

    [OFF]
    Mi a f**z van!!!???

    UGYE EZ CSAK VICC???

    Minden egyes elemet kézzel át kell állítgatni, hogy elérhető legyen! Mi értelme ennek?
    Értem az OOP-t, de itt minek?

    Van egy fejlesztőkörnyezet, amiben létre tudom hozni ablakokat, rá tudok pakolni mindenféle jóságot, és a saját kódomból bárhonnan, nem tudom piszkálgatni a saját komponenseimet, mert sérti az OOP!

    Nem értem ez miért jó?

    Delphi-ben nincs is ilyen opció, hogy egy elemet is el lehetne rejteni.
    [/OFF]

    Mi bajom származhat belőle, ha kikapcsolom, és publikussá teszem, az összeset?

    A C#-ben van valami értelme enne a logikának, hogy így működik alapesetben?

    Komolyan ?
    Mutasd a teljes hozzászólást!
Ez a téma lezárásra került a moderátor által. A lezárás oka: 1 téma - 1 kérdés! Amennyiben egy témáról általánosságokban szeretnél beszélni, akkor a társalgóban nyisd meg a témádat!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd