Antes que nada, un cordial saludo a todos...
Solo queria compartir con ustedes un posible error o inconsistencia que
tiene el .NET, estoy utilizando el 2003 con el .NETFRAMEWORK 2.0,
lo que susede es lo siguiente:
En windows form, tengo un control de usuario que llamo desde una form, dicho
control esta compuesto por varios textbox y multicombobox que estan en una
clase aparte y son llamados es tiempo de ejecucion tambien...
En dos textbox que se encuentran en el control, nesecito validar un formato
como este: #.###.###.###,##;
Para eso calculo con variables de tipo "double" que me presentan el aiguente
formato #########.###### y les cambio el formato utilizando:
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
string str=MyDouble.ToString("N");
Cuando presiono enter en el control el mismo ejecuta una serie de
validaciones, si es correcta la entrada, llama a unos metodos en el
formulario y hace calculos, todo lo hace bien pero
if(oGrid[ind].textCtothaber.Text.IndexOf(",")>=1|oGrid[ind].textCtothaber.Te
xt.IndexOf(".")>=1)
{
if
(oGrid[ind].textCtothaber.Text.Length-oGrid[ind].textCtothaber.Text.IndexOf(
",")==2)
{
string str=saldoHaber.ToString("N"); //*******
saldoHaber es un double, luego de esta linea str tomo el valor correcto
ejemplo, si saldo es: 100000.52 str vala ahora 100.000,52
oGrid[ind-1].textCtotdebe.Text=str;
//******** siendo srt = "100.000,52", luego de que se ejecuta esta linea
oGrid[ind-1].textCtotdebe.Text sigue siendo igual a lo que era antes de esta
linea, hay esta el error!!!
//********lo que significa que el .NET hace caso omiso de esta linea,
aparentemente por el formato, cabe destaca que es line en otras partes del
programa donde no utilizo
//********tantas llamadas entre clases si funciona correctamente, la cuestio
es que si str si agarra el valor como un string, porque el textbox no????
}
}
ahora bien esto si funciona
if(oGrid[ind].textCtothaber.Text.IndexOf(",")>=1|oGrid[ind].textCtothaber.Te
xt.IndexOf(".")>=1)
{
if
(oGrid[ind].textCtothaber.Text.Length-oGrid[ind].textCtothaber.Text.IndexOf(
",")==2)
{
string str=System.Convert.ToString(saldoHaber);
//** ahora str agarra el valor estring de saldoHaber es decir "100000.52"
oGrid[ind-1].textCtotdebe.Text=str;
//** ahora esta linea si se ejecuta y oGrid[ind-1].textCtotdebe.Text es str
es decir "100000.52"; lo que demuestra que las llamadas, variables etc estan
bien,
//**y la variable str es un string como en el caso anterior solo que no
resibio el cambio del formato.
}
}
Siendo esta la unica diferencia, considero que es un error o inconsistencia
de .NET, cabe destacar que para realizar esto se hacen muchos llamados entre
clases y controles siendo esto la posible causa a mi juicio de este error,
ya que si se usan estas lineas en un fomrmulario comun, y en un textbox que
pertenesaca a el mismo formulario y no a un control, si funciona
corectamente.
P.D.:
ATTE Camilo Valderrama
Leer las respuestas