Witam,
Tworze oplikacje Win Forms. Po zainicjowaniu glownego okna musze wczytac plik tekstory zawierajacy informacje o tym ile labali i z jakimi tekstami wstawic do frama. Utworzylem klase analizujaca plik i metode w niej zwracajaca liste obiektow ktore trzeba wysliwetlic. Tworze dodatkowo klase "dekoratora" ktora ma za zadanie dodawanie do glownego frama labeli. Jak moge przy standardowym uruchamianiu frama ( Application.Run(new MainForm()); ) dostac do obiektu formy aby za pomoca dekoratora dodac kontrolki?
Z gory dzieki za pomoc
Konstruktor klasy "MainForm"?
W jaki sposob przez konstruktor klasy main?
mam przykladowo:
public partial class MainForm : Form
{
static void Main(string[] args)
{
if (args.Length!=1 || !String.IsNullOrEmpty(args[0]))
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
public MainForm()
{
InitializeComponent();
Reader temp = new Reader(file);
Decorator decorate = new Decorate(temp.getLabels());
}
...
}
jaka powinna byc metoda klasy Decorator umozliwajaca odwolanie sie do MainFrama zmieniajac jego zawartosc ( dostanie sie do Controls obiektu MainForm )?
Musisz przekazac referencje formularza do swojej klasy decorator. Powinno wygladac to mniej wiecej tak:
//gdzies w klasie formularza
Decorator d = new Decorator(this);
//klasa Decorator
MainForm m;
public Decorator(MainForm forma)
{
m = forma; //masz teraz dostep do kontrolek swojego formularza z poziomu innej klasy
}
super:) niby takie proste a nie domyslilem sie:) dzieki bardzo
jednak jest jeszcze jeden problem ... postepujac tak w obiekcie MainFrame w dekoratorze nie moge sie odstac do kontrolek ani bezposrednio ani przez wlasciwosc Controls .... w debugu jednak widze ze obiekt ten przechowuje ten kontrolki ...