Tengo una aplicación en C# .net que tiene un MainForm y algunas clases.
Una de estas clases recibe mensajes de datos entrantes de una red.
Necesito obtener el texto de este mensaje anexado en un cuadro de texto multilínea en MainForm.
Puedo enviar el mensaje a un método en MainForm haciendo que el método sea estático, pero luego el método estático no puede acceder a los controles de MainForm.En C# .net, ¿cómo se accede a un control desde un método estático?
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
}
El error de compilación:
Se requiere una referencia de objeto para los TheApplicationName.MainForm.txtDisplayMessages no estáticos campo, el método o propiedad' '
Cualquier ayuda es apreciada.
Todavía soy un buen principiante de C# así que sea descriptivo.
Una vez que elimino la palabra clave estática del método, ya no puedo llamarla desde la clase IncomingData. No entiendo lo que quiere decir con "llamado por esa instancia particular de ese objeto", ¿podría explicarlo más?tenga en cuenta que necesito que estos mensajes se envíen al cuadro de texto inmediatamente después de recibirlos, por lo que el evento sería la recepción de un mensaje. Gracias. – timmyg
Supongo que es estático que lo estaba llamando con MainForm. ReceiveMSG() [o simplemente ReceiveMSG()]. Tendría que ser llamado desde una instancia específica de MainForm, (MainForm mf = new MainForm(), o similar, para crear una instnance). Entonces, podrías llamarlo como mf. ReceiveMSG(), reemplazando mf con lo que usted denominó su instancia de MainForm. Sin ánimo de ofender, pero creo que debes leer literatura sobre la orientación de objetos, aprender todo lo que esto significa, y luego ver cómo la sintaxis de C# se relaciona con ella. – Annath
En serio, debes tomar CLR Via C#. Es una lectura fácil (PASE LA PRIMERA PAREJA DE CAPÍTULOS) y entra en detalles sobre esto y más. – Will