Principales respuestas
Como se puede poner un contador y un for + if en datagrid?

Pregunta
-
Hola ,que tal
Quiero hacer lo siguiente:
Pero quiero hacer que el primer contador cambie mediante voy tocando el button,
nose bien si es con este commando: " for (int i = 0; i < 10; i++) " //quiero ver si al tocar el button me de 10 numeros, que luego iran con los numeros random que quiero poner abajo// , pero nose como agregarlo directamente a la viñeta "total".
Despues quisiera poder poner un numero random que creo que es con esto: " int valor = rnd.Next(7900, 8200) " , pero nose bien como agregarlo a la viñeta , ademas que con el mismo quisiera hacer un if , que me separe nose si esto esta bien , pero creo que es algo asi " if (!((int)e.Value < 8000) && !((int)e.Value > 8120)) " pero nose como agregarlo, si esta en 8000 hasta 8120 lo ponga en la viñeta "correcta" y si no es que vaya a "incorrecta"
disculpen que pida mucho , es que estoy con esto y no puedo hacerlo :S
Desde ya , muchas gracias.
- Cambiado Enrique M. Montejo domingo, 13 de enero de 2019 22:16 Programación con C#.
Respuestas
-
Hola:
hide() te lo oculta no te lo borra.
La opción más fácil, es que cada form tienga su código igual, pero diferente, de manera que datagridview2, tiene otro dataTable.
En vez de tener el código en el metodo button1.click, extraelo a otro método y desde button1.click, llámalo.
Haciendo esta operativa, ya podrás invocar a la vez, el código también perteneciente al otro formulario, ya que su dataTable lo llenas con los siguientes valores.
- Propuesto como respuesta Pedro AlfaroModerator miércoles, 16 de enero de 2019 22:55
- Marcado como respuesta Pedro AlfaroModerator miércoles, 16 de enero de 2019 22:55
Todas las respuestas
-
Hola Números al azar y contador DataGridView
Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comento que estaremos realizando una revisión a profundidad acerca del inconveniente que se te está presentando.
Proporcionaremos una respuesta lo más pronto posible.
Gracias por usar los foros de MSDN.
Pedro Alfaro
____
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. -
Hola Números al azar y contador en DataGridView:
Lo que estas preguntando no tiene mucho sentido. Seguro que para tí lo tiene, porque tu idea esta en tú cabeza, pero no es lo que has escrito.
Pero quiero hacer que el primer contador cambie mediante voy tocando el button,
En el evento click de tu botón desarrollas el código para que cuente..... aquí supongo que te referiras a contar las filas del datagridview.
https://stackoverflow.com/questions/1031704/visual-basic-how-do-i-read-each-row-in-a-datagrid
Para el resto, que por lo que intento pensar, estas buscando ayuda, en como cargar y modificar datos en el datagridview
https://aprendamosdeprogramacion.wordpress.com/2016/10/15/capturar-y-mostrar-datos-de-un-datagridview-en-vb-net/
Espero te ayude
- Propuesto como respuesta Pedro AlfaroModerator jueves, 10 de enero de 2019 19:50
-
Pero quiero hacer que el primer contador cambie mediante voy tocando el button,
En el evento click de tu botón desarrollas el código para que cuente..... aquí supongo que te referiras a contar las filas del datagridview.
Es lo siguiente , cuando presiono el button , quiero poner que me de 10 números(Random), pero que en la primer fila ("Total") me cuente cada una de ellas, lo que no entiendo bien, es como agregarlos , por eso dejo los commandos que use , pero no me funciona bien ( for (int i = 0; i < 10; i++) ) //nose si esta bien, pero creo que ese es el contador//
//El commando de numeros randoms creo que es este " int valor = rnd.Next(7900, 8200)" < ahi pongo desde que numero hasta que numero , verdad?
Deberia ponerlo asi? " dtgvProyecto.Rows[n].Cells[1].Value = int valor = rnd.Next(7900, 8200) y aqui acomplar el if que si el numero random me da 8000 hasta 8120 , deberia ir a la viñeta correcto , de lo contrario a incorrecta, esa es mi pregunta, nose bien como acomplarlos en las celdas
-
Hola:
Creo que te he entendido.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim table As New DataTable table.Columns.Add("Total", GetType(Integer)) table.Columns.Add("Correctas", GetType(Integer)) table.Columns.Add("Incorrectas", GetType(Integer)) Dim aleatorio As Integer Dim contadorCorrecto As Integer For index As Integer = 1 To 10 aleatorio = GetRandom(7900, 8120) If aleatorio < 8000 Then contadorCorrecto = contadorCorrecto + 1 End If table.Rows.Add(index, aleatorio, contadorCorrecto) Next DGTabla.DataSource = table End Sub Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer Static Generator As System.Random = New System.Random() Return Generator.Next(Min, Max) End Function
En el ejemplo, en vez de alimentar los datos directamente en un dataGridView, utilizó un dataTable. Y es el dataTable, el que alimenta al dataGridView.
Al mismo le creo tres columnas, y luego como tu quieres diez filas, buscamos un aleatorio, que te he puesto en otro método separado, y si el mismo, es menor que 8000 consideramos que es incorrecto, sino es correcto, por tanto le sumo uno al contador.
Espero te ayude, o al menos te aclare un poco el panorama.
-
Hola:
Creo que te he entendido.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim table As New DataTable table.Columns.Add("Total", GetType(Integer)) table.Columns.Add("Correctas", GetType(Integer)) table.Columns.Add("Incorrectas", GetType(Integer)) Dim aleatorio As Integer Dim contadorCorrecto As Integer For index As Integer = 1 To 10 aleatorio = GetRandom(7900, 8120) If aleatorio < 8000 Then contadorCorrecto = contadorCorrecto + 1 End If table.Rows.Add(index, aleatorio, contadorCorrecto) Next DGTabla.DataSource = table End Sub Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer Static Generator As System.Random = New System.Random() Return Generator.Next(Min, Max) End Function
En el ejemplo, en vez de alimentar los datos directamente en un dataGridView, utilizó un dataTable. Y es el dataTable, el que alimenta al dataGridView.
Al mismo le creo tres columnas, y luego como tu quieres diez filas, buscamos un aleatorio, que te he puesto en otro método separado, y si el mismo, es menor que 8000 consideramos que es incorrecto, sino es correcto, por tanto le sumo uno al contador.
Espero te ayude, o al menos te aclare un poco el panorama.
-
Hola:
Creo que te he entendido.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim table As New DataTable table.Columns.Add("Total", GetType(Integer)) table.Columns.Add("Correctas", GetType(Integer)) table.Columns.Add("Incorrectas", GetType(Integer)) Dim aleatorio As Integer Dim contadorCorrecto As Integer For index As Integer = 1 To 10 aleatorio = GetRandom(7900, 8120) If aleatorio < 8000 Then contadorCorrecto = contadorCorrecto + 1 End If table.Rows.Add(index, aleatorio, contadorCorrecto) Next DGTabla.DataSource = table End Sub Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer Static Generator As System.Random = New System.Random() Return Generator.Next(Min, Max) End Function
En el ejemplo, en vez de alimentar los datos directamente en un dataGridView, utilizó un dataTable. Y es el dataTable, el que alimenta al dataGridView.
Al mismo le creo tres columnas, y luego como tu quieres diez filas, buscamos un aleatorio, que te he puesto en otro método separado, y si el mismo, es menor que 8000 consideramos que es incorrecto, sino es correcto, por tanto le sumo uno al contador.
Espero te ayude, o al menos te aclare un poco el panorama.
-
-
-
Hola Números al azar y contador DataGridView;
const int minValue = 7200; const int maxValue = 8120; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("Total", typeof(int)); dt.Columns.Add("Correctas", typeof(int)); dt.Columns.Add("Incorrectas", typeof(int)); int aleatorio=0, contador=0; for (int i = 0; i < 10; i++) { aleatorio = getRandom(minValue, maxValue); if (aleatorio<8000) contador++; dt.Rows.Add(i, aleatorio, contador); } DGTabla.DataSource = dt; } private int getRandom(int min, int max) { var rnd = new Random(); return rnd.Next(min, max); }
En c# puede ser algo así.
-
Hola Números al azar y contador DataGridView;
const int minValue = 7200; const int maxValue = 8120; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("Total", typeof(int)); dt.Columns.Add("Correctas", typeof(int)); dt.Columns.Add("Incorrectas", typeof(int)); int aleatorio=0, contador=0; for (int i = 0; i < 10; i++) { aleatorio = getRandom(minValue, maxValue); if (aleatorio<8000) contador++; dt.Rows.Add(i, aleatorio, contador); } DGTabla.DataSource = dt; } private int getRandom(int min, int max) { var rnd = new Random(); return rnd.Next(min, max); }
En c# puede ser algo así.
CS1061 "Random" no contiene una definición para "Next" ni se encuentra ningún método de extensión "Next" accesible que acepte un primer argumento del tipo "Random" (¿falta alguna directiva using o una referencia de ensamblado? "
Antes tambien habia usado el .next y me salia lo mismo , no entiendo bien eso :S , pero todo lo demas lo toma sin problemas
-
Pulsa en visual studio botón derecho sobre next y el intellisense te ofrecerá la solución.
No obstante Random pertenece a using System;
using System; using System.Data; using System.Windows.Forms; namespace WindowsFormsApplication4 { public partial class Form1 : Form { const int minValue = 7200; const int maxValue = 8120; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("Total", typeof(int)); dt.Columns.Add("Correctas", typeof(int)); dt.Columns.Add("Incorrectas", typeof(int)); int aleatorio=0, contador=0; for (int i = 0; i < 10; i++) { aleatorio = getRandom(minValue, maxValue); if (aleatorio<8000) contador++; dt.Rows.Add(i, aleatorio, contador); } DGTabla.DataSource = dt; } private int getRandom(int min, int max) { var rnd = new Random(); return rnd.Next(min, max); } } }
Random aparece en .net 1.1 en el namespace System
https://docs.microsoft.com/es-es/dotnet/api/system.random.next?view=netframework-4.7.2
http://devcate.blogspot.com/2012/06/generar-numeros-aleatorios.html
-
Pulsa en visual studio botón derecho sobre next y el intellisense te ofrecerá la solución.
No obstante Random pertenece a using System;
using System; using System.Data; using System.Windows.Forms; namespace WindowsFormsApplication4 { public partial class Form1 : Form { const int minValue = 7200; const int maxValue = 8120; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("Total", typeof(int)); dt.Columns.Add("Correctas", typeof(int)); dt.Columns.Add("Incorrectas", typeof(int)); int aleatorio=0, contador=0; for (int i = 0; i < 10; i++) { aleatorio = getRandom(minValue, maxValue); if (aleatorio<8000) contador++; dt.Rows.Add(i, aleatorio, contador); } DGTabla.DataSource = dt; } private int getRandom(int min, int max) { var rnd = new Random(); return rnd.Next(min, max); } } }
Random aparece en .net 1.1 en el namespace System
https://docs.microsoft.com/es-es/dotnet/api/system.random.next?view=netframework-4.7.2
http://devcate.blogspot.com/2012/06/generar-numeros-aleatorios.html
Ya funciono , pero no me separa correctas de incorrectas , me da un numero al azar en correctas ._.
el if deberia decir (8000>8120) correctas , de lo contrario , seria un contador para incorrectas
-
-
Hola:
No lo compliques que es muy simple.
donde dice
if (aleatorio<8000)
debe decir lo contrario
if (aleatorio>=8000)
Te lo explico: El bucle que genera las filas, llama al metodo GetRandom, que le devuelve un numero aleatorio entre 7900 y 8120.
La sentencia de condición if, evalúa si el valor devuelto se considera correcto o incorrecto. Si es correcto, le suma uno al contador.
y luego inserta en el datatable, el numero de fila, el numero aleatorio para el bucle, y el contador
-
Hola:
No lo compliques que es muy simple.
donde dice
if (aleatorio<8000)
debe decir lo contrario
if (aleatorio>=8000)
Te lo explico: El bucle que genera las filas, llama al metodo GetRandom, que le devuelve un numero aleatorio entre 7900 y 8120.
La sentencia de condición if, evalúa si el valor devuelto se considera correcto o incorrecto. Si es correcto, le suma uno al contador.
y luego inserta en el datatable, el numero de fila, el numero aleatorio para el bucle, y el contador
No me esta sumando nada a ninguno de los dos y ya le cambie el if
No le suma 1 contador ya sea para correcto o para incorrecto
-
dentro del if , lo que necesito que se vea seria
8000 - 8120 = 1 contador a correcto , 0 incorrectos
de lo contrario si es ejemplo 7999 (o menor) o 8121(o mayor) = 1 correcto(del anterior), 1 incorrecto
y asi sucesivamente con los 10 numeros generados,
otra cosa, cada vez que toco el button me da los mismos numeros en el contador total ? no hay un acumulador completo ? (si toco el button 2 veces me dice siempre 1 - 9 , todas las veces que lo presiono me sale el mismo nombre en contador total)
-
-
Lo puse asi
int aleatorio = 0, correctas = 0 , incorrectas =0;
for (int i = 0; i < 20; i++)
{
aleatorio = getRandom(minValue, maxValue);
if (aleatorio >= 8000 && aleatorio <=8120)
correctas++;
else
if (aleatorio < 8000 && aleatorio > 8120)
incorrectas++;
else
incorrectas++;
dt.Rows.Add(i, correctas, incorrectas);pero me sigue dando mal, osea me da de los 20 numeros que pido , solo me da 1 repetido 20veces
ademas que siempre que lo presiono solo me da 20numeros nuevos borrandome los anteriores, y quiero que se mantengan los anteriores ejemplo, presiono 1 vez me da del 10 numeros, presiono de nuevo y tendria 20 numeros, presiono de nuevo y me da 30 numeros y asi sucesivamente
-
Hola Números al azar y contador DataGridView:
using System; using System.Data; using System.Windows.Forms; namespace WindowsFormsApplication4 { public partial class Form1 : Form { const int minValue = 7900; const int maxValue = 8120; DataTable dt; int numVecesBoton = 0; int aleatorio = 0, correcto = 0, incorrecto=0; /*variables del formulario */ public Form1() { InitializeComponent(); dt = new DataTable(); dt.Columns.Add("Total", typeof(int)); dt.Columns.Add("Aleatorios", typeof(int)); dt.Columns.Add("Resultados", typeof(int)); /*inicializada tabla */ } private void button1_Click(object sender, EventArgs e) { Random rnd = new Random((int)DateTime.Now.Ticks); /*generamos el aleatorio con la semilla */ for (int i = 0; i < 10; i++) { aleatorio = rnd.Next(minValue, maxValue); /*obtenemos un aleatorio */ if (aleatorio >= 8000) correcto++; /* si es valor mayor que 8000 sumamos 1 a correcto */ else incorrecto++; /* sino le sumamos uno a incorrecto */ dt.Rows.Add(i+1+(10*numVecesBoton), aleatorio, correcto); /*cargamos una fila en el dataTable con la fila*/ } DGTabla.DataSource = dt; numVecesBoton++; } } }
Para poder tener el botón y añadir varias veces cuando le das, tienes que sacar la definición del dataTable del método para que pueda persistir, por ejemplo al formulario.
Como el contador varíará te he puesto otras variables.
Además para generar nuevos aleatorios, tienes que crear el objeto Random, con una semilla.
Sigo sin entender como quieres la tercera columna, pero en la linea que cargamos la fila en el dataTable, van en la variable correcta, cuando es mayor que 7999. Las incorrectas no se visualizan aunque te he añadido una variable por si lo quieres gestionar.
Salida
-
Hola Números al azar y contador DataGridView:
using System; using System.Data; using System.Windows.Forms; namespace WindowsFormsApplication4 { public partial class Form1 : Form { const int minValue = 7900; const int maxValue = 8120; DataTable dt; int numVecesBoton = 0; int aleatorio = 0, correcto = 0, incorrecto=0; /*variables del formulario */ public Form1() { InitializeComponent(); dt = new DataTable(); dt.Columns.Add("Total", typeof(int)); dt.Columns.Add("Aleatorios", typeof(int)); dt.Columns.Add("Resultados", typeof(int)); /*inicializada tabla */ } private void button1_Click(object sender, EventArgs e) { Random rnd = new Random((int)DateTime.Now.Ticks); /*generamos el aleatorio con la semilla */ for (int i = 0; i < 10; i++) { aleatorio = rnd.Next(minValue, maxValue); /*obtenemos un aleatorio */ if (aleatorio >= 8000) correcto++; /* si es valor mayor que 8000 sumamos 1 a correcto */ else incorrecto++; /* sino le sumamos uno a incorrecto */ dt.Rows.Add(i+1+(10*numVecesBoton), aleatorio, correcto); /*cargamos una fila en el dataTable con la fila*/ } DGTabla.DataSource = dt; numVecesBoton++; } } }
Para poder tener el botón y añadir varias veces cuando le das, tienes que sacar la definición del dataTable del método para que pueda persistir, por ejemplo al formulario.
Como el contador varíará te he puesto otras variables.
Además para generar nuevos aleatorios, tienes que crear el objeto Random, con una semilla.
Sigo sin entender como quieres la tercera columna, pero en la linea que cargamos la fila en el dataTable, van en la variable correcta, cuando es mayor que 7999. Las incorrectas no se visualizan aunque te he añadido una variable por si lo quieres gestionar.
Salida
Al final le cambie unas cosas :
public partial class Form1 : Form
{
const int minValue = 7900;
const int maxValue = 8120;
DataTable dt;
int numVecesBoton = 0;
int aleatorio = 0, correcto = 0, incorrecto = 0;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Total", typeof(int));
dt.Columns.Add("Correctas", typeof(int));
dt.Columns.Add("Incorrectas", typeof(int));
Random rnd = new Random((int)DateTime.Now.Ticks);
int aleatorio = 0, correctas = 0 , incorrectas =0;
for (int i = 0; i < 20; i++)
{
aleatorio = rnd.Next(minValue, maxValue);
if (aleatorio >= 8000 && aleatorio <=8120 )
correctas++;
else
incorrectas++;
dt.Rows.Add(i + 1 + (20 * numVecesBoton), correctas + (20 * numVecesBoton), incorrectas + (20 * numVecesBoton));
}
dataGridView1.DataSource = dt;
numVecesBoton++;
int aleatorio = 0, correctas = 0 , incorrectas =0;
for (int i = 0; i < 20; i++)
{
aleatorio = rnd.Next(minValue, maxValue);
if (aleatorio >= 8000 && aleatorio <=8120 )
correctas++;
else
incorrectas++;
/* sino le sumamos uno a incorrecto */
dt.Rows.Add(i + 1 + (20 * numVecesBoton), correctas + (20 * numVecesBoton), incorrectas + (20 * numVecesBoton));
}
dataGridView1.DataSource = dt;
}
private int getRandom(int min, int max)
{
var rnd = new Random();
return rnd.Next(7800, 8300);
}quedo asi :3
-
Ahora si va cambiando mediante le voy tocando el boton , pero no me deja ver las anteriores 10 que ya se habian cargado, ademas le agregue al final:
dataGridView1.DataSource = dt;
dataGridView2.DataSource = dt;pero en ambos me da los mismos números , esos no pueden dar distintos ? intento copiando y pegando de nuevo el if pero igual da los mismos números , aunque ahi ya consegui lo que estaba buscando
el numero 8000 , 8120 , lo necesitaba pero lo que queria que muestre era solo un contador de los números, asi como se ve en la imagen que subi :D
-
Hola:
Para que te deje ver las anteriores.
El objeto DataTable no se puede inicializar, cada vez que le das al botón, porque esta asociado al dataGridView, por eso esta puesto
public Form1() { InitializeComponent(); dt = new DataTable(); dt.Columns.Add("Total", typeof(int)); dt.Columns.Add("Aleatorios", typeof(int)); dt.Columns.Add("Resultados", typeof(int)); /*inicializada tabla */ }
Y no en button1.click
Si observase este pedazo de código, en el se le añaden los tipos y nombres de columnas al dataTable, que luego se asocia al datagridview1, por tanto si quieres solo correctos e incorrectos, cambias donde dice Aleatorios, pones correctos, y donde dice Resultados pone Incorrectos.
Para insertar cada una de las filas al DataTable, solo tienes que cambiar donde dice:
dt.Rows.Add(i+1+(10*numVecesBoton), aleatorio, correcto);
por
dt.Rows.Add(i+1(10*numvecesBotón), correcto, incorrecto);
Pero ojo, si observas mi última versión del código, cuando me dijiste que querías volver a dar el botón y que aparecieran más, yo saqué del método la linea int correctos.... y la puse en la propia clase.
para que estas variables, se inicializaran al entrar en el formulario, y puedan ir acumulando. En tu código, actual, existen correctas, y correcto
Correcto, que es quien deberia de trabajar, no hace nada, y correctas, es la que suma, pero no acumula.
Cambialo.
-
Hola:
Para que te deje ver las anteriores.
El objeto DataTable no se puede inicializar, cada vez que le das al botón, porque esta asociado al dataGridView, por eso esta puesto
public Form1() { InitializeComponent(); dt = new DataTable(); dt.Columns.Add("Total", typeof(int)); dt.Columns.Add("Aleatorios", typeof(int)); dt.Columns.Add("Resultados", typeof(int)); /*inicializada tabla */ }
Y no en button1.click
Si observase este pedazo de código, en el se le añaden los tipos y nombres de columnas al dataTable, que luego se asocia al datagridview1, por tanto si quieres solo correctos e incorrectos, cambias donde dice Aleatorios, pones correctos, y donde dice Resultados pone Incorrectos.
Para insertar cada una de las filas al DataTable, solo tienes que cambiar donde dice:
dt.Rows.Add(i+1+(10*numVecesBoton), aleatorio, correcto);
por
dt.Rows.Add(i+1(10*numvecesBotón), correcto, incorrecto);
Pero ojo, si observas mi última versión del código, cuando me dijiste que querías volver a dar el botón y que aparecieran más, yo saqué del método la linea int correctos.... y la puse en la propia clase.
para que estas variables, se inicializaran al entrar en el formulario, y puedan ir acumulando. En tu código, actual, existen correctas, y correcto
Correcto, que es quien deberia de trabajar, no hace nada, y correctas, es la que suma, pero no acumula.
Cambialo.
osea que para ver los anteriores 10(despues de tocar 2 veces el button)
solo tengo que poner esto:
public Form1() { InitializeComponent(); dt = new DataTable(); dt.Columns.Add("Total", typeof(int)); dt.Columns.Add("Aleatorios", typeof(int)); dt.Columns.Add("Resultados", typeof(int)); /*inicializada tabla */ }
en el button ??
-
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Total", typeof(int));
dt.Columns.Add("Correctas", typeof(int));
dt.Columns.Add("Incorrectas", typeof(int));
//Aca en vez de declararlos si los tengo directamente en el datagridview, cuando haga click, se van a ver los 10 anteriores? (haciendo click 2 veces el button, las anteriores 10 desaparecen)//
Random rnd = new Random((int)DateTime.Now.Ticks);
int aleatorio = 0, correctas = 0, incorrectas = 0;
for (int i = 0; i < 20; i++)
{
aleatorio = rnd.Next(minValue, maxValue); /
if (aleatorio >= 8000 && aleatorio <= 8120)
correctas++;
else
incorrectas++;
dt.Rows.Add(i + 1 + (10 * numVecesBoton), correctas + (5 * numVecesBoton), incorrectas + (5 * numVecesBoton));
//aca el puse 5* al final de ambas , asi me daba bien el resultado, asi quedo perfecto//
}
dataGridView1.DataSource = dt;
dataGridView3.DataSource = dt;
numVecesBoton++;
}
private int getRandom(int min, int max)
{
var rnd = new Random();
return rnd.Next(7800, 8300);
}Asi lo deje , pero como digo , al hacer click se ven los ultimo 10 solamente , como muestro en la siguiente imagen:
-
-
Para hacer que los datagidview muestren los datos anteriores(despues de hacer click 2 veces)
tengo que hacer que el datagridview ya tenga las celdas echas desde antes??
osea , crear las columnas manualmente?
Como muestro aqui:
las primeras 3 son creadas desde > crear columnas sin poner ningun comnado y el segundo es con :
DataTable dt = new DataTable();
dt.Columns.Add("Total", typeof(int));
dt.Columns.Add("Correctas", typeof(int));
dt.Columns.Add("Incorrectas", typeof(int)); -
Vamos a ir por partes para poder ir avanzando.
No a
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Total", typeof(int));
dt.Columns.Add("Correctas", typeof(int));
dt.Columns.Add("Incorrectas", typeof(int));Si a
public Form1() { InitializeComponent(); dt = new DataTable(); dt.Columns.Add("Total", typeof(int)); dt.Columns.Add("Aleatorios", typeof(int)); dt.Columns.Add("Resultados", typeof(int)); /*inicializada tabla */ }
Esto es porque cuando haces click en el botón el dataTable ya esta inicializado, por tanto no genera un nuevo objeto dataTable. Mantiene el viejo así, en vez de 10 filas, cuando pulsas dos veces, el dataTable tiene 20 filas.
-
-
-
Aún sigo sin saber lo que quieres meter en el dataGridView2
Ya me funciono lo otro ,muchisimas gracias.
Seria hacer lo mismo en 2 datagridview , puse al final
dataGridView1.DataSource = dt;
dataGridView2.DataSource = dt;pero al darle al button , me da exactamente los mismos numeros:
-
-
Pero cuando te refieres a hacer lo mismo, no es a que este duplicado, sino a hacer 10 filas para el datagridview 1 y 10 filas diferentes pero del mismo modo para el datagridview 2.
¿Es eso?
exacto , osea que en ambas de distintos números, pense que poniendo el comando en distintos o duplicarlo me daría distintos, pero son iguales o.o
esto lo hago en 2 forms , puse el comando:
this.Hide();
Form2 frm = new Form2();
frm.Show();se abre el otro form , pero al volver, la casilla con los 10 numeros esta vacia , pense que con "this.Hide()" solo la ocultaba , no que la cerraba D:!
-
Pero cuando te refieres a hacer lo mismo, no es a que este duplicado, sino a hacer 10 filas para el datagridview 1 y 10 filas diferentes pero del mismo modo para el datagridview 2.
¿Es eso?
exacto , osea que en ambas de distintos números, pense que poniendo el comando en distintos o duplicarlo me daría distintos, pero son iguales o.o
esto lo hago en 2 forms , puse el comando:
this.Hide();
Form2 frm = new Form2();
frm.Show();se abre el otro form , pero al volver, la casilla con los 10 numeros esta vacia , pense que con "this.Hide()" solo la ocultaba , no que la cerraba D:!
al cambiar de form a form 2 directamente todo lo que salio ,se borra
hay alguna forma de que mientras este activo se mantengan los numeros que se pusieron antes ?
-
Hola:
hide() te lo oculta no te lo borra.
La opción más fácil, es que cada form tienga su código igual, pero diferente, de manera que datagridview2, tiene otro dataTable.
En vez de tener el código en el metodo button1.click, extraelo a otro método y desde button1.click, llámalo.
Haciendo esta operativa, ya podrás invocar a la vez, el código también perteneciente al otro formulario, ya que su dataTable lo llenas con los siguientes valores.
- Propuesto como respuesta Pedro AlfaroModerator miércoles, 16 de enero de 2019 22:55
- Marcado como respuesta Pedro AlfaroModerator miércoles, 16 de enero de 2019 22:55
-
Hola:
hide() te lo oculta no te lo borra.
La opción más fácil, es que cada form tienga su código igual, pero diferente, de manera que datagridview2, tiene otro dataTable.
En vez de tener el código en el metodo button1.click, extraelo a otro método y desde button1.click, llámalo.
Haciendo esta operativa, ya podrás invocar a la vez, el código también perteneciente al otro formulario, ya que su dataTable lo llenas con los siguientes valores.
Hola que tal , de casualidad usted tiene whatsapp , o skype para poder hablarle por ahi ?
tuve unos problemas personales y tuve que posponer todo al final , ahora quiero retomar , y creo que es mejor preguntarle por ahi, intento hacer un video para explicarle pero tengo que descargar otro programa para grabar la pantalla de la pc -
Hola:
hide() te lo oculta no te lo borra.
La opción más fácil, es que cada form tienga su código igual, pero diferente, de manera que datagridview2, tiene otro dataTable.
En vez de tener el código en el metodo button1.click, extraelo a otro método y desde button1.click, llámalo.
Haciendo esta operativa, ya podrás invocar a la vez, el código también perteneciente al otro formulario, ya que su dataTable lo llenas con los siguientes valores.
https://www.youtube.com/watch?v=ieOqAzC8Oio&feature=youtu.be
justo aca consegui uno, al cambiar de form , se borra lo que puse antes en el datagrid anterior , y quiero usar el ultimo (si toco varias veces y me da 70 como numero final del contador "total" en otro form , pero al intentarlo , no se puede, ya que se desaparecen los contadores :S