elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ayuda con delegados y objetos [C#]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con delegados y objetos [C#]  (Leído 5,663 veces)
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Ayuda con delegados y objetos [C#]
« en: 6 Mayo 2014, 20:06 pm »

Hola, podría algún iluminado mostrarme el camino?

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. using Servidor;
  11.  
  12. namespace Delegados
  13. {
  14.    public delegate void NuevaConexion();
  15.  
  16.    public partial class frmPrincipal : Form
  17.    {
  18.  
  19.        SockMaster ObjetoServidor = new SockMaster();
  20.  
  21.        public frmPrincipal()
  22.        {
  23.            InitializeComponent();
  24.            listView1.Items.Add("Nuevo item agregado"); // Aca si funciona, pero no es donde lo preciso...
  25.        }
  26.  
  27.        public static void Server_NuevaConexion()
  28.        {
  29.            listView1.Items.Add("Nuevo item agregado"); // Aca no funciona, y es donde lo preciso!!!
  30.            frmPrincipal.listView1.Items.Add("Nuevo item agregado"); // No funciona, no es visible el control...
  31.        }
  32.  
  33.    }
  34. }
  35.  
  36. namespace Servidor
  37. {
  38.    using Delegados;
  39.  
  40.    class SockMaster
  41.    {
  42.        public SockMaster()
  43.        {            
  44.            // Genero el evento Nueva conexion                
  45.            NuevaConexion NC = frmPrincipal.Server_NuevaConexion;
  46.            NC();
  47.        }
  48.  
  49.    }
  50. }

El error es:
Citar
Se requiere una referencia de objeto para el campo, método o propiedad no estáticos 'Delegados.frmPrincipal.listView1'

No se que hago mal, o como solucionarlo.. le di mil vueltas y nada, si no sale un error acá, sale un error allá..

Gracias! Saludos!


En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: Ayuda con delegados y objetos [C#]
« Respuesta #1 en: 6 Mayo 2014, 21:53 pm »

Creo que eso te ocurre porque no estás haciendo referencia a un objeto de Tipo "frmPrincipal" sino a la clase. Es decir, primero tienes que declarar un objeto de Tipo "frmPrincipal" y cambiar la línea:

Código
  1. NuevaConexion NC = frmPrincipal.Server_NuevaConexion;

Por algo así como:

Código
  1. frmPrincipal Formulario = new frmPrincipal();
  2. NuevaConexion NC = Formulario.Server_NuevaConexion;

Dinos si eso te funciona. Saludos.


En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con delegados y objetos [C#]
« Respuesta #2 en: 6 Mayo 2014, 22:44 pm »

Perdón, me falto aclarar algo,, yo consigo invocar el evento.. lo que no puedo es acceder al listview1.

La cosa seria asi:
Tengo una clase que pone un puerto a la escucha de clientes, cuando se conecta un nuevo cliente, crea un hilo y lo pone en una lista, o sea permite multiconexion. Esa clase funciona bien. Yo quiero agregar al usuario en un listview que esta en el formulario, no consigo acceder al listview ni con delegados.

Citar
Dinos si eso te funciona. Saludos.
No puedo crear una nueva instancia de la clase porque me genera problemas con la clase "Socket", digamos, al crear un new frmPrincipal, tambien se crea una nueva de Socket y crash.

Saludos!
En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: Ayuda con delegados y objetos [C#]
« Respuesta #3 en: 7 Mayo 2014, 06:27 am »

Ah, pues por ahí debiste empezar. La próxima vez que postees un error escribe lo que te dice el debuger, para que nosotros podamos entender de qué va exactamente. También era muy importante que mencionaras que intentas acceder al listbox desde un hilo distinto.

Lo que tienes que hacer es verificar la propiedad invokerequired del listbox antes de intentar modificarlo. Si la propiedad te da verdadero usas el método this.invoke(); para que se modifiquen los datos dentro del mismo hilo donde se creo la aplicación.

Te paso dos enlaces en donde se explica cómo hacer esto:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/296f8e39-fa62-4540-942a-26a53da0896a/threading-invokerequired

http://www.elguille.info/NET/vs2005/trucos/acceder_a_un_control_desde_otro_hilo.htm
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con delegados y objetos [C#]
« Respuesta #4 en: 7 Mayo 2014, 16:39 pm »

Hola! En este momento no puedo probar,, en un rato confirmo si funciono.. pero me parece que el problema no es ese.. eso lo había visto en vb sobre manipular objetos desde otros hilos..
Me dice que el método estático no se que cosa.. El error del compilador lo puse ahí abajo de la negrita..

Saludos! Gracias!



Actualización:
Código
  1.        public static void Server_NuevaConexion()
  2.        {
  3.         Aca no puedo acceder al listview1, siquiera sale en la venta de ayuda...
  4.        }

No se que pasa..  :rolleyes:
« Última modificación: 7 Mayo 2014, 19:25 pm por Vaagish » En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: Ayuda con delegados y objetos [C#]
« Respuesta #5 en: 7 Mayo 2014, 19:38 pm »

Tienes razón el problema parece ser otro. Disculpa, me dejé guiar por lo que son los errores comunes en vez de ir por lo más obvio o sencillo, pues me parece que tu problema se debe a la forma en que se declara el listview. Debes hacerlo público y estático para que sea accesible desde cualquier parte de tu proyecto.

Espero que con eso se solucione.  ;D
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con delegados y objetos [C#]
« Respuesta #6 en: 7 Mayo 2014, 19:51 pm »

Citar
Insertar Cita
Tienes razón el problema parece ser otro. Disculpa, me dejé guiar por lo que son los errores comunes en vez de ir por lo más obvio o sencillo, pues me parece que tu problema se debe a la forma en que se declara el listview. Debes hacerlo público y estático para que sea accesible desde cualquier parte de tu proyecto.

Ahi esta!! Estamos cerca del problema ahora!! jeje Como declaro ese listview con esas propiedades desde la ventana de diseño?? O lo creo con código? Capaz es mas fácil crearlo con código..

Gracias Benjo!
En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: Ayuda con delegados y objetos [C#]
« Respuesta #7 en: 7 Mayo 2014, 20:58 pm »

No es necesario que lo hagas con código. En el diseñador sólo tienes que modificar la propiedad "Modifiers" y ponerla como "Public". Aunque existe otra manera que te recomiendo más, y que puedes utilizar en caso de que la forma anterior te cause algún problema. Puedes declarar un método público dentro del formulario al que llames desde el thread. En este método agregas el código que modifique el listview. De esta manera no tienes que hacerlo público.

Un saludo y espero que ahora sí se solucione. XD
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda con delegados y objetos [C#]
« Respuesta #8 en: 7 Mayo 2014, 22:44 pm »

Citar
No es necesario que lo hagas con código. En el diseñador sólo tienes que modificar la propiedad "Modifiers" y ponerla como "Public". Aunque existe otra manera que te recomiendo más, y que puedes utilizar en caso de que la forma anterior te cause algún problema. Puedes declarar un método público dentro del formulario al que llames desde el thread. En este método agregas el código que modifique el listview. De esta manera no tienes que hacerlo público.

Nop, ni una ni otra.. Mejor me replanteo el diseño de la clase y listo.. 3 días para manejar un fuck*** listview.. por eso odio todo lo relacionado a objetos.. a mi dejame con la programación orientada a procedimientos..

Saludos! Gracias!!
En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: Ayuda con delegados y objetos [C#]
« Respuesta #9 en: 8 Mayo 2014, 05:44 am »

Pues es una lástima que no hayamos podido resolver tu problema. Suerte. :)
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Delegados en hilos... algo raro « 1 2 »
.NET (C#, VB.NET, ASP)
Zzombi 10 10,560 Último mensaje 7 Diciembre 2009, 00:03 am
por [D4N93R]
[Tutorial] Delegados en .Net (C#)
.NET (C#, VB.NET, ASP)
[D4N93R] 0 7,403 Último mensaje 30 Julio 2010, 17:47 pm
por [D4N93R]
[Solucionado][Duda][C#]Eventos y delegados
.NET (C#, VB.NET, ASP)
final_frontier 5 5,411 Último mensaje 17 Agosto 2010, 14:55 pm
por [D4N93R]
Delegados Generales [Aporte]
.NET (C#, VB.NET, ASP)
Keyen Night 0 1,615 Último mensaje 19 Febrero 2012, 22:59 pm
por Keyen Night
Los controles de la class principal no se actualizan con delegados... :-/
.NET (C#, VB.NET, ASP)
Eleкtro 7 3,512 Último mensaje 21 Diciembre 2012, 07:11 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines