Così, l'idea generale è che è necessario tenere traccia di ciò che è di portata. Ci sono molti modi per fare ciò che si vuole fare, ma ognuno di essi si basa su oggetti che si riferiscono l'un l'altro correttamente in modi che potrebbe non essere ancora completamente compreso. Non preoccuparti, tutti devono lavorare su questo a un certo punto.
Il motivo per cui il compilatore si è lamentato quando si è tentato di rendere statico quel membro è perché l'etichetta stessa non è statica. Essendo legato a una singola istanza di MainScreen, non ha significato in un contesto statico, che è per definizione uno scope senza alcun riferimento intrinseco a un particolare MainForm.
La classe Date è, ovviamente, anche un contesto completamente diverso, ma i membri non statici hanno accesso a un'istanza di Date. Non c'è alcun percorso tra questi due contesti finché non lo crei. La rotta statica in realtà avrebbe funzionato (guarda il pattern Singleton: l'idea è che memorizzi la prima e l'unica istanza di una classe staticamente e riferisciti ad essa da un'altra parte) ma probabilmente non è un buon progetto. Altri modi per farlo sono passando a Date un'istanza di MainScreen (preferibilmente attraverso un'interfaccia) o persino LabelDate stesso. Tutti questi potrebbero ottenere i due pezzi necessari per parlare insieme.
Tuttavia, vorrei suggerire di pensare a dove è stato memorizzato il tuo stato di gioco. È nella biblioteca o nell'assemblea consumante? Se si tratta del primo, si potrebbe voler pensare di creare un modello completo GUIless dei dati che deve essere archiviato e manipolato nella classe della libreria e consumare solo i dati già pronti così come sono nell'applicazione principale. L'altra alternativa è che il tuo modello risiede nell'applicazione principale e richiama semplicemente la tua libreria, se necessario. In questo caso, probabilmente dovresti per ora chiedere alla biblioteca le risposte (o al massimo ascoltare gli eventi nella libreria) e NON aspettarti che torni all'applicazione da sola (se ottenere o fornire informazioni).
Nel capire come eseguire questa operazione, è probabile che i problemi di gestione dell'ambito siano molto più facili da gestire. Anche un po 'di buona architettura può fare molto.
Ma se questo è tutto un po 'schiacciante, non sottolineo troppo. Sembra che tu lo stia facendo per divertimento, che è un ottimo modo per imparare. Ti imbatterai in problemi di questo tipo e non farai un buon design o uno non buono, ma in entrambi i casi stai lottando con concetti importanti e ne uscirai meglio.
fonte
2013-05-10 04:57:44
è possibile modificare i controlli da un'altra classe se si dispone di un oggetto istanziato nella classe controller. – lexeRoy
Il progettista non lo fa automaticamente? –
Puoi mostrare il codice (o un campione di codice sarebbe sufficiente) dove chiami un altro modulo? – lexeRoy