Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

MyClass nasludjuje Form, NewClass nasledjuje MyClass -> dizajner ne radi

  • 8 odgovora
  • 4.574 pregleda

Najnovija ↓

MyClass nasludjuje Form, NewClass nasledjuje MyClass -> dizajner ne radi 23.09.2013. u 09:55 · pre 159 meseci #1
Ovako imam klasu koja nasledjuje Form. Tu moju klasu nasledjuju ostale klase. Te ostale klase ne mogu da se otvore u dizajneru. Kada zakomentarisem nasledjivanje moje klasi u toj novoj formi, a vratim na Form, sve radi.

public MyClass : Form
{}

public NewClass : MyClass
{
//ne radi designer
}

public NewClass : Form //MyClass
{
//radi designer
}


Ta moja klasa koja se nalazi izmedju u tom lancu nasledjivanja nesto izmeni da dizajner ne radi.
Zakomentarisao sam klasu, tako da prakticno imam praznu klasu i opet ne radi.
Da li je moguce da se nesto "izmeni" kod tog nasledjivanja, bez mog znanja, i da to pokvari dizajner.

Kada se iskompajlira i pokrene aplikacija, sve radi. Ne radi samo dizajner, sto zna biti prilicno iritantno kada treba nesto menjati na UI.
Potpis
he he he
Re: MyClass nasludjuje Form, NewClass nasledjuje MyClass -> dizajner ne radi 23.09.2013. u 10:18 · pre 159 meseci #3
Svi dizajn elementi se nalaze u design fajlu, ako mu se dizajner ne prikazjue greska je verovatno u imefajla.design.cs fajlu, ili ima pogresnu ideju o nasledjivanju.
Evo kako ja mislim da on zamislja nasledjivanje(Njegovo je u crvenom, moje u zelenom)
Potpis
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
Re: MyClass nasludjuje Form, NewClass nasledjuje MyClass -> dizajner ne radi 23.09.2013. u 11:27 · pre 159 meseci #4
Nije apstraktna, niti sam sakrio ctor.

Zaboravio sam da dodam i to, da se ta greska ne javlja uvek, nego skoro uvek, ali je jednako neuoptrebljivo i ovo drugo stanje. U tom drugom stanju se nekad dizajner otvori, ali samo imam obrise od forme, sa onom tacka-linijom, ne vidim nista. Kada kliknam na kontrole u properties dlg, javljaju mi se nekad i njihovi obrisi, ali cesto budu nenormalno razbacani po formi, sto nema veze sa stvarnim stanje. Napominjem da kada se izbilda sve radi ok.


Zasto je to pogresno nasledjivanje?
Moja base forma ima neka podesavanja koja hocu da imaju sve forme. Tako da se ona nalazi izmedju Form i formi koje se kasnije vide na UI. To sto si nacrtao u zelenom mi ne treba u ovom slucaju.
Base forma nema UI, odnosno ne dodajem nista ne njega, samo ono sto je nasledjeno od Form. Unutra se samo nalaze eventhandleri za neke event, load, close ....
Potpis
he he he
Re: MyClass nasludjuje Form, NewClass nasledjuje MyClass -> dizajner ne radi 23.09.2013. u 11:32 · pre 159 meseci
izmenjeno 1 put, poslednji put dusans 23.09.2013. u 12:12
  1. dusans23.09.2013. u 12:12zapis iz teksta poruke
#5
Da li si proverio u SVIM .design.cs fajlovima ovo što ti je napisao AMD (da je i tu svuda nasleđena dobra klasa)?
Takođe, ja bih MyClass napravio kao "klot" klasu - obrisao bih designer fajl, partial, InitializeComponent, itd...
Re: MyClass nasludjuje Form, NewClass nasledjuje MyClass -> dizajner ne radi 23.09.2013. u 12:19 · pre 159 meseci #6
U svakoj klasi u lancu moraš u default konstruktoru pozvati svoju InitializeComponent. Nakon toga zatvori dizajner i rebilduj projekat. Takođe, sav tvoj kod u kontruktoru koji nije potreban u toku dizajniranja izvršavaj samo ako se ne nalaziš u DesignModu:


Code:

if (!this.DesignMode) {
    // tvoj kod
}
Re: MyClass nasludjuje Form, NewClass nasledjuje MyClass -> dizajner ne radi 23.09.2013. u 13:10 · pre 159 meseci #7
Sve je to ok postavljeno.
Nasao sam ipak koren problema:
Code:

protected override void OnCreateControl()
{
            this.formPlacement = new FormPlacement();
             ...
            try
            {
                this.formPlacement .RefreshZeroSize(this);
                this.formPlacement = true;
 ----->>>> this.formPlacement.SetPlacement(Handle);
                OnPlacementRestorePerfromed();
            }
            catch (Exception exception )
            {
                        ...
             }
            finally
            {
                this.formPlacement = false;
                this.formPlacement = null;
            }
            base.OnCreateControl();
            this.Invalidate();
}


Ta gore oznacena linija pravi problem.


Klasa FormPlacement koristi:
[DllImport("user32.dll")]
public static extern bool SetWindowPlacement(IntPtr hWnd, [In] ref WINDOWPLACEMENT lpwndpl);
Potpis
he he he
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme