Ho un'applicazione in C# .net che ha un MainForm e alcune classi.
Una di queste classi riceve i messaggi di dati in arrivo da una rete.
Ho bisogno di inserire il testo di questi messaggi in una casella di testo su più righe sul modulo principale.
Posso inviare il messaggio a un metodo nel MainForm rendendo il metodo statico, ma il metodo statico non può accedere ai controlli MainForm.In C# .net, come si accede a un controllo da un metodo statico?
TheIncomingDataClass.cs
namespace TheApplicationName
{
class TheIncomingDataClass
{
public void IncomingMessage(IncomingMessageType message)
{
TheApplicationName.MainForm.ReceiveMSG(message);
}
MainForm.cs
public static void ReceiveMSG(string message)
{
txtDisplayMessages.AppendText(message); //This line causes compile error
}
L'errore di compilazione:
È necessario un riferimento oggetto per i TheApplicationName.MainForm.txtDisplayMessages nonstatic campo, metodo o proprietà' '
Qualsiasi aiuto è apprezzato.
Sono ancora un principiante del C# quindi per favore sii descrittivo.
Una volta rimossa la parola chiave statica dal metodo, non posso più chiamarla dalla classe IncomingData. Non capisco cosa intendi per "chiamato da quell'istanza particolare di quell'oggetto" potresti spiegare ulteriormente?tieni presente che ho bisogno che questi messaggi vengano inviati alla casella di testo immediatamente dopo la loro ricezione, quindi l'evento sarebbe la ricezione di un messaggio. Grazie. – timmyg
Presumo poiché è statico che lo stavate chiamando con MainForm. ReceiveMSG() [o solo ReceiveMSG()]. Dovrebbe essere chiamato da un'istanza specifica di MainForm, (MainForm mf = new MainForm() o simile, per creare un'istanza). Quindi, puoi chiamarlo come mf. ReceiveMSG(), sostituendo mf con qualunque cosa hai chiamato la tua istanza di MainForm. Senza offesa, ma penso che sia necessario leggere una letteratura agnostica sull'orientamento agli oggetti, imparare cosa significa tutto questo e quindi vedere come la sintassi C# si riferisce ad essa. – Annath
Seriamente, dovresti prendere CLR tramite C#. È una lettura facile (SALTA LA PRIMA COPPIA DI CAPITOLI) e va bene nei dettagli su questo e altro! – Will