SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: rogerfor en Domingo 3 de Junio de 2012, 03:19

Título: Como validar todos los textbox al mismo tiempo
Publicado por: rogerfor en Domingo 3 de Junio de 2012, 03:19
buenas noches, tengo un programa cuya basica sintaxis es esta

Código: C#
  1. if (Convert.ToInt16(AA.Text).Equals(1))
  2.                         {
  3.                             grafo.WriteLine("A -> A;");
  4.                         }
  5.                         else
  6.                         {
  7.                             grafo.WriteLine("");
  8.                         }

y son como 25 de estos, pero a la hora que haya alguno vacio me da error, la cuestion es como puedo decirle a todos los textbos que si esta null no haga nada o salte un mensaje que escriba un valor, he probado solo comillas pero me da error no se por que espero me puedan ayudar gracias.
Título: Re:Como validar todos los textbox al mismo tiempo
Publicado por: U2_Caparzo en Domingo 3 de Junio de 2012, 05:05
podrias probar con algo como

Código: [Seleccionar]
short Value;
            foreach (Control c in this.Controls)
                if (c is TextBox)
                    if (string.IsNullOrEmpty(c.Text))
                        continue;
                    else
                    {
                        short.TryParse(c.Text, out Value);
                        if (Value.Equals(1))
                        {
                            grafo.WriteLine("A -> A;");
                        }
                        else
                            grafo.WriteLine("");
                    }
Título: Re:Como validar todos los textbox al mismo tiempo
Publicado por: rogerfor en Lunes 4 de Junio de 2012, 05:02
La verdad no entiendo muy bien eso, tengo como 25 de esos if uno tras otro, como lo integro a lo que tengo?? no entendi muy bien ese codigo. disculpa es que aun soy novato.


Esto es lo que tengo, me detecta que si hay un textbox en blanco pero luego me da error y me dice que la cadena es incorrecta

https://gist.github.com/2866260
Título: Re:Como validar todos los textbox al mismo tiempo
Publicado por: U2_Caparzo en Lunes 4 de Junio de 2012, 15:45
asi lo haria yo, tiene los mismos nombres que en el tuyo asi que no habria problemas, el final no lo entendi mucho asi que lo deje tal cual estaba.

Código: [Seleccionar]
using System;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Windows.Forms;

namespace ProyectoGrafos
{
    public partial class Grafos  : Form
    {
        public Grafos()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            {
                StringBuilder grafo = new StringBuilder();
                grafo.AppendLine("diagraph A{");
                foreach (Control c in this.Controls)
                {
                    if (c is TextBox)
                    {
                        if (string.IsNullOrEmpty(c.Text))
                        {
                            MessageBox.Show("Ingrese todos los valores.", "Error de validación",
                                            MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            return;
                        }
                        else
                        {
                            byte Valor;
                            byte.TryParse(c.Text, out Valor);
                            if (Valor.Equals(1))
                                grafo.AppendLine(c.Name.Substring(0, 1) + " -> " + c.Name.Substring(1, 1));
                            else
                                grafo.AppendLine();
                        }
                    }
                }
                grafo.AppendLine("}");
                File.WriteAllText(@"grafo.dot", grafo.ToString());

                #region Guardar y Crear la imagen
                saveFileDialog1.Filter = "Archivos de imagen (*.png)|*.png";

                saveFileDialog1.Title = "Nombre para el archivo";
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    ProcessStartInfo Grafo = new ProcessStartInfo(@"dot.exe");
                    Grafo.Arguments = "grafo.dot -o " + saveFileDialog1.FileName + " -Tpng -Grankdir=LR";
                    Grafo.UseShellExecute = true;
                    Process.Start(Grafo);
                }
                #endregion
            }
        }
    }
}


Suerte!
Título: Re:Como validar todos los textbox al mismo tiempo
Publicado por: rogerfor en Lunes 4 de Junio de 2012, 22:03
Wow!! enserio muchas gracias muy buen código, de verdad te lo agradezco mucho, ahora estoy tratando de que me cargue la imagen creada pero eso creo que si puedo, la ultima cosa que si no es mucho pedir es que como le agrego para que no me acepte letras he probado agregar al if del textbox en blanco &&codigoparaletras pero me bota al momento de agregar letra, aunque lo que hiciste si introduzco letra no me da error pero el ing quiere total manejo de excepciones en el código ¬¬ de verdad te agradezco esa ayuda de ha servido de mucho, y pues donde puedo aprender a programar asi? por que no tenia idea de que todo lo que hice se podia abreviar de esa manera, si conoces algun manual o de que forma puedo lograr llegar a eso te lo agradecere mucho, enserio.
saludos y de verdad gracias.
Título: Re:Como validar todos los textbox al mismo tiempo
Publicado por: U2_Caparzo en Martes 12 de Junio de 2012, 01:49
pues la verdad no sabria hacer que no acepte letras de una manera correcta, pero se me ocurren 2 soluciones (sin contar try/catch que es algo lento)

char[] numeros = new char{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
o bien
string numeros = "0123456789";


1.- Seria al momento de presionar el boton revisar si para cada char en cada textbox es contenido en "numeros", y si no borrarlo.
2.- Algo poco eficiente, seria tener un Timer, y cada cierto intervalo, por ejemplo 100 ms revisar cada char en cada textbox, si esta contenido en "numeros", o sino borrarlo.

la diferencia esta en que quieres, algo un poco mejor, pero menos comodo para el usuario, o que borre las letras automaticamente cada cierto intervalo.
Título: Re:Como validar todos los textbox al mismo tiempo
Publicado por: gabio2 en Martes 12 de Junio de 2012, 04:47
Puedes investigar acerca del char.IsLetter aquí puedes ver.. http://msdn.microsoft.com/es-es/library/yyxz6h5w%28v=VS.80%29.aspx

NO he leído todo el tema, pero si es para validar si es una letra eso haría.. pero repito NO estoy en contexto de todo el tema. :) ..



Saludos!