que estaba teniendo este mismo problema y vine con una idea que es un poco diferente. En mi caso, estoy haciendo un programa de tarjetas de memoria para mis dos hijos más pequeños y quería poder devolver la respuesta proporcionada al formulario principal (formulario nuevo para cada nueva pregunta de tarjeta de vocabulario para que el formulario principal pueda actualizar cuántos son izquierda, cuántos correctos, cuántos incorrectos, etc.) sin tener que agregar valores a una base de datos. Parece ser demasiado para algo que debería ser simple. Lo que hice fue crear una clase con 3 de cada tipo de variable. Pensé que tres de cada tipo serían suficientes para la mayoría de los trabajos.
Este es un ejemplo de mi nueva clase:
namespace ClassNamespace
{
public class ValueHolder
{
public int intValue1 { get; set; }
public int intValue2 { get; set; }
public int intValue3 { get; set; }
public long longValue1 { get; set; }
.
.
.
}
}
creo un nuevo ValueHolder (ValueHolder VH;) del formulario padre y pasarlo a la forma infantil. En el formulario secundario, creo un ValueHolder nuevo y luego lo configuro igual al objeto ValueHolder enviado en el constructor de clase del formulario secundario. Ahora, cuando se presiona la tecla enter (respuesta dada), puedo configurar vh.intValue1 igual a this.answerBox.text; ... bueno, tengo que usar int.tryparse(); Pero se entiende la idea. Entonces solo necesito hacer referencia a vh.intValue1 desde el formulario principal para obtener el valor ingresado.
forma de Padres:
for (int i = 0; i < limit; i++)
{
ValueHolder vh = new ValueHolder();
ChildClass cc = new ChildClass(vh);
MessageBox.Show(vh.intValue1.ToString()); //to test that it works
}
y el niño formulario:
ValueHolder vh;
public ChildClass (ValueHolder vhIncoming)
{
vh = vhIncoming;
}
private void answerBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
vh.intValue1 = 1234;
}
}
Ésta parece ser la solución más simple para mi escenario.Sé que esta pregunta es antigua, pero quería agregar esta opción para cualquier persona en una posición similar. Solo agregue la clase a su proyecto, agregue más de un tipo o más tipos a la clase según sea necesario, enjuague repetido para proyectos futuros.
¿Puedes revisar tus etiquetas? ¿Es esto realmente una pregunta específica C# -4? Además, ¿son sus formularios WinForms? Gracias – Stuart
Sí. Si hay una mejor solución en 4.0, está bien y es bueno saberlo. – venkat
Cómo recuperar el control (ejecutar el punto de ejecución) de FormB a FormA. – venkat