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

dobre pytanie dotyczące polimorfizmu

Object Storage Arubacloud
+1 głos
204 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 596 wizyt
0 głosów
2 odpowiedzi 390 wizyt
0 głosów
2 odpowiedzi 445 wizyt

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...