• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

dobre pytanie dotyczące polimorfizmu

VPS Starter Arubacloud
+1 głos
197 wizyt
pytanie zadane 26 grudnia 2016 w C# przez military Obywatel (1,120 p.)
Załóżmy że mamy Grid/GroupBox w osobnej klasie, nazwijmy tę klasę B, i dziedziczy ta klasa z klasy o nazwie A (tak dziedziczenie jest potrzebne) to proszę powiedzcie mi jak wywołać funkcję Buttona(jest ona już napisana)który jest w Grid/GroupBox. W sensie... np A a=new B(); i zrobić tak żeby można było klikać na tego Buttona. Jak Wy to widzicie. Bardzo proszę o pomoc.

2 odpowiedzi

0 głosów
odpowiedź 27 grudnia 2016 przez jankustosz1 Nałogowiec (35,880 p.)
wybrane 7 stycznia 2017 przez military
 
Najlepsza

z tego co napisałeś to mówisz o czymś takim

class A
{}

class B : A
{
  public Grid jakisGrid; // ma on jakąś publiczną funkcję Click
}

jeżeli zrobisz tak jak napisałeś
A a = new B()
to bez rzutowania z typu A na B nie dostaniesz się do tego grida.
możesz zrobić coś takiego:
((B)a).jakisGrid.Click()

lub lepiej:

class A
{
  public abstract void Klikniecie();
}

class B : A
{
  public Grid jakisGrid; // ma on jakąś publiczną funkcję Click
  public override void Klikniecie()
  {
     jakisGrid.Click();
  }
}

i wtedy bez rzutowania możesz zrobić coś takiego

A a = new B();
a.Klikniecie();



Nie testowałem więc może coś nie działać albo być jakaś literówka

 

komentarz 27 grudnia 2016 przez military Obywatel (1,120 p.)

ok to teraz mam taki problem, o co chodzi?? nie mogę tworzyć własnych klas pochodnych od istniejących już klas??

komentarz 28 grudnia 2016 przez jankustosz1 Nałogowiec (35,880 p.)
Nie działa to bo klasa okna musi być pierwsza w pliku. Poszłoby gdybyś swoją wstawił pod główną.
0 głosów
odpowiedź 28 grudnia 2016 przez Dorion300 Szeryf (90,250 p.)

ok to teraz mam taki problem, o co chodzi?? nie mogę tworzyć własnych klas pochodnych od istniejących już klas??

Musisz stworzyć klasę A w osobnym pliku.

    public class A : GroupBox {
        public Button dalej;
        public A(Form mainform) {
            dalej = new Button();
            dalej.Name = "nazwa";
            dalej.Text = "tekst";
            dalej.Location = new System.Drawing.Point(20,20);
            dalej.Size = new System.Drawing.Size(100, 100);
            dalej.UseVisualStyleBackColor = true;
            mainform.Controls.Add(dalej);
        }
    }

Tak to widzę ale uważam że nie powinno się tak pisać gdyż panuje chaos w kodzie, moim zdaniem wszystkie kontrolki powinny być tworzone w klase Form1 gdyż jak widać, klasa A potrzebuje klasę Form do stworzenia miejsca dla przycisku a nie powinna.
Dlaczego nie powinna? gdyż musisz zmodyfikować metodę InitializeComponent().
Jeśli chcesz natomiast by przycisk był w groupbox'ie to musisz stworzyć przycisk dopiero po utworzeniu groupbox'a a więc stworzyć osobną metodę którą wywołujesz na końcu InitializeComponent().

komentarz 28 grudnia 2016 przez military Obywatel (1,120 p.)
Czyli klasa w osobnym pliku (logiczne) i w momencie wywołania konstruktora samemu (w funkcji w której robię new) ustalić co i jak tak?? dobrze rozumiem??

Podobne pytania

0 głosów
3 odpowiedzi 568 wizyt
0 głosów
2 odpowiedzi 381 wizyt
0 głosów
2 odpowiedzi 413 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...