Título: Problema con Objeto C# Publicado por: Bob1098 en 29 Diciembre 2014, 15:32 pm Hola, bueno estaba tratando de hacer un programilla en C# que sirviera para resolver sudokus, y de momento solo llevo hecho el cronometro de tiempo y los botones para controlar si comenzar, pausar o detener el juego. Para generar los números he pensado almacenarlos en una matriz int, y para mostrarlos pensé que sería mas cómodo utilizar una matriz de la clase TextBox en la que guardo todos los controles que tengo donde quiero mostrar los números, y asi con un ciclo for poder pasar de un textbox a otro sin problema.
La cuestión es que al darle valores a la propiedad Text de los TextBox almacenados en la matriz obtengo una excepción. Código: Código
La excepción dice así: Excepción no controlada del tipo 'System.NullReferenceException' en Sudoku.exe Información adicional: Referencia a objeto no establecida como instancia de un objeto. Espero que sepan a que se debe. Y ya de paso si conocen algún otro método para guardar los textbox que no sea manualmente como yo he hecho =P. Título: Re: Problema con Objeto C# Publicado por: Shell Root en 29 Diciembre 2014, 16:09 pm Printea las variables i, j en:
Código
Título: Re: Problema con Objeto C# Publicado por: Eleкtro en 29 Diciembre 2014, 17:50 pm La excepción se produce por que intentas acceder a un objeto que no ha sido inicializado.
Comprueba si esto no te lanza una null-reference exception: Código
Si te funciona, comprueba que nTextBox1 y siguientes están instanciados. Saludos Título: Re: Problema con Objeto C# Publicado por: Bob1098 en 29 Diciembre 2014, 21:49 pm La excepción se produce por que intentas acceder a un objeto que no ha sido inicializado. Comprueba si esto no te lanza una null-reference exception: Código
Si te funciona, comprueba que nTextBox1 y siguientes están instanciados. Saludos Si, ya no salta la excepción, pero no hace nada no se muestran los números. A que te refieres con instanciar los textbox? Tengo que hace nTextBox1 = new TextBox con todos? :S Título: Re: Problema con Objeto C# Publicado por: El Benjo en 30 Diciembre 2014, 01:02 am Sí. Como menciona Elektro debes hacer eso con cada uno de los textbox (si pones atención al código verás que eso está resuelto porque la asignación está dentro del bucle for()). Recuerda que una variable del tipo de cualquier objeto (a diferencia de los tipos primitivos como int, bool, etc) es un puntero que guarda la dirección de memoria donde existen las propiedades del objeto. Cuando tú creas una variable de la forma:
Código
La variable 'VarObjeto' no apunta a ninguna dirección de memoria. Y cuando haces: Código Lo que haces es crear un nuevo objeto de la clase 'TextBox' y asignar a 'VarObjeto' la dirección de memoria donde reside el objeto. Y eso de que no te muestre nada es porque al crear una nueva instancia para cada objeto del arreglo dejan de hacer referencia a los textbox que tienes creados en el formulario. Ahora, esto es lo interesante: Si previamente hacían referencia a los textbox que tienes en el formulario, ¿por qué te saltaba la excepción como si fueran objetos nulos? Espero que Elektro o alguien más nos pueda dar explicación a esto. :/ Título: Re: Problema con Objeto C# Publicado por: Bob1098 en 30 Diciembre 2014, 12:19 pm Sí. Como menciona Elektro debes hacer eso con cada uno de los textbox (si pones atención al código verás que eso está resuelto porque la asignación está dentro del bucle for()). Recuerda que una variable del tipo de cualquier objeto (a diferencia de los tipos primitivos como int, bool, etc) es un puntero que guarda la dirección de memoria donde existen las propiedades del objeto. Cuando tú creas una variable de la forma: Código
La variable 'VarObjeto' no apunta a ninguna dirección de memoria. Y cuando haces: Código Lo que haces es crear un nuevo objeto de la clase 'TextBox' y asignar a 'VarObjeto' la dirección de memoria donde reside el objeto. Y eso de que no te muestre nada es porque al crear una nueva instancia para cada objeto del arreglo dejan de hacer referencia a los textbox que tienes creados en el formulario. Ahora, esto es lo interesante: Si previamente hacían referencia a los textbox que tienes en el formulario, ¿por qué te saltaba la excepción como si fueran objetos nulos? Espero que Elektro o alguien más nos pueda dar explicación a esto. :/ Efectivamente, es lo que tu dices al final de tu respuesta, no comprendo por qué motivo saltaba la excepción como si se tratasen de objetos nulos, si ya tenían asignada una dirección de memoria... Aún así gracias por las repsuestas a todos. :) |