kontrolka w formie

0

witam... mam pytanie odnosnie forma i UserControl
gdy w formie odwoluje sie do kontrolki

Kontrolka k = new Kontrolka();
a w klasie Kontrolka chce sie odwolac do forma z ktorego byla wywolana klasa
robie to w ten sposob

public class Kontrolka()
{
    private funkcja()
   {
      NS.MForm.toolStripProgressBar.Value = 10; // gdzie NS to glowny namespac (Kontrolka() tez do niej nalezy), a MForm to klasa forma
   }
}

jednak kompilator wywala mi blad

An object reference is required for the nonstatic field, method, or property

i nie wiem jak sobie z tym poradzic... pomocy ;]

0

Przecież nie możesz operować na klasie, a raczej jej składowej niestatycznej! Prześlij w konstruktorze ze pomocą słowa kluczowego this MSForm i w Kontrolce będziesz mógł z nią zrobić co chcesz ;>

0

to moze teraz inny problem ;]

mam funkcje publiczna ktora odwoluje sie do zmiennych statycznych jak jak i prywatnych.
i moje pytanie przmi. jak z klasy Kontrolka dostac sie do tej funkcji w klasie MForm. Gdy probowalem

MForm k = new MForm();
k.funkcja();

to po wykonaniu tej w/w polecien zmiany zapisane w metodzie nie zachodza w formie ;
moze jakies pomysly ?

0

Ale zaraz zaraz, jeśli dobrze rozumiem to MForma jest już utworzona, więc jeśli chcesz wprowadzić w niej zmiany to musisz operować na wcześniej utworzonym obiekcie, a nie tworzyć nowy. Z kolei do zmiennych statycznych możesz się zawsze odwoływać i używanie ich powinno przynosić efekty.

0

jednak postepojac w ten sposob musialby, zmienic wszystkie objekty na statyczne, tzn wszystkie ktore biora udzial w funkcji. czy nie ma innego sposobu ?

0
bartek___ napisał(a)

jednak postepojac w ten sposob musialby, zmienic wszystkie objekty na statyczne, tzn wszystkie ktore biora udzial w funkcji. czy nie ma innego sposobu ?

Lukke'owi chodzilo bardziej chyba o to:

//jestes sobie w klasie MForm i gdzies tworzysz obiekt Kontrolki
Kontrolka k = new Kontrolka(this);
k.jakas_metoda();
...

//Klasa kontrolki
class Kontrolka 
{
  private MForm Parent;
  
  public Kontrolka(MForm Parent)
  {
    this.Parent = Parent;
  }

  public void jakas_metoda()
  {
     //i tu mozesz sobie operowac dowolnie na mecierzystym MForm
     Parent.costam = costam2;
  }
}

pozdrawiam
johny

0

dziala elegancko ;] dzieki bardzo

0

No tak, właśnie o to chodziło, ale sęk tkwi w tym ?Aby język giętki powiedział wszystko, co pomyśli głowa.? :) Pisanie wszystkich składowych jako statycznych jest nieeleganckie, groźne i narusza zasady hermetyzacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1