Tuesday 9 February 2010

TextBox numerico en C# y VB.NET

Codigo C#:

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar)) // Si no es numerico
{
// Invalidar la accion
e.Handled = true;
// Enviar el sonido de beep de windows
System.Media.SystemSounds.Beep.Play();
}
}



Codigo VB.NET:

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs)

If Not Char.IsDigit(e.KeyChar) Then

' Invalidar la accion
e.Handled = true ' Si no es numerico
' Enviar el sonido de beep de windows
System.Media.SystemSounds.Beep.Play()

End if

End Sub




Publicado en tttony.blogspot.com

Solucion al error


La generación SQL dinámica para UpdateCommand no es compatible con SelectCommand, que no devuelve ninguna información de columna de clave.


Este error se produce cuando se esta actualizando un registro que no tiene un campo unico, lo que tienes que hacer es marcar como unico algun campo que normalmente es llamado ID y listo solucionado el problema



Publicado en tttony.blogspot.com

Recuperar datos entre formularios en C# y VB.NET

En VB6.0 era tan sencillo como esto:

'Form2
txtNombre.Text = frmMain.txtNombre.Text

'O usando una variable publica
txtNombre.Text = frmMain.strNombre


En C# es distinto ya que se manejan clases, supongamos que estas en esta situacion, tienes dos formularios: FormUno.cs y FormDos.cs, el formulario FormUno es el primero en iniciar y tienes dos ComboBox en cada formulario llamados ComboBox1 y ComboBox2 pero quieres que en el FormDos en el evento Load cargue los datos de los CombosBoxes del FormUno sin instanciar el formulario porque recuerda que el FormUno inicia primero:

Codigo C#:

// FormUno.cs
public partial class FormUno : Form
{
public static string strCombo1 = "";
public static string strCombo2 = "";

private void ComboBox1_DropDown(object sender, EventArgs e)
{
strCombo1 = ComboBox1.Text;
}

private void ComboBox1_DropDownClosed(object sender, EventArgs e)
{
strCombo1 = ComboBox1.Text;
}
private void ComboBox2_DropDown(object sender, EventArgs e)
{
strCombo2 = ComboBox2.Text;
}

private void ComboBox2_DropDownClosed(object sender, EventArgs e)
{
strCombo2 = ComboBox2.Text;
}

}


Codigo VB.BET:

' FormUno.cs
Public Partial Class FormUno Inherits Form

Public Shared strCombo1 As String = ""
Public Shared strCombo2 As String = ""
Private Sub ComboBox1_DropDown(sender As Object, e As EventArgs)
strCombo1 = ComboBox1.Text
End Sub

Private Sub ComboBox1_DropDownClosed(sender As Object, e As EventArgs)
strCombo1 = ComboBox1.Text
End Sub
Private Sub ComboBox2_DropDown(sender As Object, e As EventArgs)
strCombo2 = ComboBox2.Text
End Sub

Private Sub ComboBox2_DropDownClosed(sender As Object, e As EventArgs)
strCombo2 = ComboBox2.Text
End Sub

End Class


Declarar dos variables publicas y estaticas en la clase para asi acceder directamente a ellas, ademas si los CombosBoxes cambian de Texto hay que declarar los eventos DropDown y DropDownClosed para guardar instantaneamente el texto en la variable y asi quedaria el FormDos:

Codigo C#:

public partial class FormDos : Form
{

private void FormDos_Load(object sender, EventArgs e)
{
/** Sin necesidad de instanciar el FormUno se puede acceder a los datos **/
this.Combo1.Text = FormUno.strCombo1;
this.Combo2.Text = FormUno.strCombo2;
}

}


Codigo VB.NET:

Public Partial Class FormDos Inherits Form

Private Sub FormDos_Load(sender As Object, e As EventArgs)
' Sin necesidad de instanciar el FormUno se puede acceder a los datos
this.Combo1.Text = FormUno.strCombo1
this.Combo2.Text = FormUno.strCombo2
End Sub

End Sub


NOTA: codigos convertidos gracias a esta aplicacion


Publicado en tttony.blogspot.com