Visual CSharp .NET - Combobox

 
Vista:

Combobox

Publicado por jenifer (1 intervención) el 03/07/2006 22:53:16
buenas estoy trabajando en c shar en windons (VS.net 2005) como hago para colocar un combobox sea solo numerico que no puedan escribir letras y que sea de un solo digito?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Combobox

Publicado por Claudio (10 intervenciones) el 11/08/2006 21:14:50
Hola,
Agrega a tu proyecto una nueva clase llamada NumericComboBox y copia el código que sigue. Este te permitirá agregar un nuevo componente del tipo combobox en tu Toobox del VS, Sin embargo en este componente se pueden ingresar numeros enteros o dobles, si quieres ingresar un sólo dígito debes programarlo en el evento NumericBox_TextChanged, algo así como if(this.Text.long > 1)....
Bueno, suerte con esto. Ojalá te sirva esto.

using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Windows.Forms;

namespace Documentos
{
public partial class NumericComboBox : ComboBox
{
public NumericComboBox()
{
InitializeComponent();
}

public NumericComboBox(IContainer container)
{
container.Add(this);

InitializeComponent();
}

/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Component Designer generated code

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// NumericComboBox
//
this.TextChanged += new System.EventHandler(this.NumericBox_TextChanged);
this.ResumeLayout(false);

}

#endregion

/// <summary>
/// Variable que indica si es entero o no (real)
/// </summary>
bool _isInteger = false;

/// <summary>
/// Valor antes de actualizar
/// </summary>
double ValorAntiguo = 0;

/// <summary>
/// Valor actualizando
/// </summary>
double ValorNuevo;

/// <summary>
/// Entero antes de actualizar
/// </summary>
int iValorAntiguo = 0;

/// <summary>
/// Entero actualizando
/// </summary>
int iValorNuevo;


/// <summary>
/// Propiedad que indica si el valor que recibe es un entero
/// </summary>
public bool isInteger
{
get
{
return _isInteger;
}
set
{
_isInteger = value;
}

}

/// <summary>
/// Se ejecuta cuando el valor cambia
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void NumericBox_TextChanged(object sender, EventArgs e)
{
if (this.Text == null || this.Text == "")
{
//Si el texto es nulo, termina. Devuelve cero
iValorAntiguo = 0;
ValorAntiguo = 0;
this.Text = "0";
return;
}

//Determina cual es el proceso que debe llamarse dependiendo si el valor es entero o no
if (_isInteger)
{
comprobarInt();
}
else
{
comprobarDouble();
}
}

/// <summary>
/// Comprueba si el valor ingresado es un real double
/// </summary>
void comprobarDouble()
{
try
{
ValorNuevo = double.Parse(this.Text);
ValorAntiguo = ValorNuevo;
}
catch
{
MessageBox.Show("Debe Ingresar un Número", "Aviso");
this.Text = ValorAntiguo.ToString();
}
}

/// <summary>
/// Comprueba si el valor ingresado en un entero
/// </summary>
void comprobarInt()
{
try
{
iValorNuevo = int.Parse(this.Text);
iValorAntiguo = iValorNuevo;
}
catch
{
MessageBox.Show("Debe Ingresar un Número Entero", "Aviso");
this.Text = iValorAntiguo.ToString();
}
}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar